Skip to content
Latchkey

プロセス環境とは?継承される設定

プロセス環境とは、プログラムが持ち運ぶ環境変数の集合で、起動時に親プロセスから継承されたものです。

すべてのプロセスは環境の中で動きます。それは起動時に受け取った名前付き変数の集合です。この環境は、設定がシェルからそれが実行するプログラムへ、そしてあるCIステップのシェルからそれが呼び出すツールへと流れる仕組みです。継承を理解すると、なぜ一部の変数は見えて他は見えないのかが分かります。

環境とは何か

環境は、プロセスに付随するキーと値のペアのリストです。プロセスが子を起動すると、子はコピーを受け取ります。このスナップショットの意味論により、親での後の変更は既に実行中の子には届きません。

継承の仕組み

子は起動時に親のエクスポートされた変数のコピーを受け取ります。子が行う変更はその子にローカルなままです。だからこそ、サブプロセス内で設定された変数は、それを起動したシェルに戻って現れないのです。

環境の確認

  • env または printenv はすべての環境変数を一覧表示します。
  • 引数なしの export はエクスポートされたシェル変数を表示します。
  • プログラムは言語のAPIを通じて自身の環境を読み取ります。

エクスポート済み対ローカル

エクスポートされた変数だけが子に渡される環境に入ります。素のシェル変数は現在のシェルでは見えますが継承されず、これは「なぜツールが私の変数を見られないのか」という混乱の頻繁な原因です。

CIにおける環境

CIは、プラットフォーム変数、設定した変数、シークレットから各ステップの環境を構築します。各ステップは新しいプロセスなので、環境の変更は自動的には永続しません。値を後続のステップに引き継ぐには、特別なファイルに書き込みます。

マネージドrunnerでの一貫した環境

Latchkeyのrunnerでは、各ステップがクリーンで定義された環境を受け取るため、buildは再現可能です。ステップ間で値を共有するには、ステップ内で下方向にのみ流れる継承に頼るのではなく、プラットフォームの環境ファイルに書き込んでください。

重要なポイント

  • プロセス環境とは、親から継承された変数の集合です。
  • 子は起動時にコピーを受け取り、その変更は親に流れ戻りません。
  • CIでは各ステップが新しいプロセスなので、env fileを介して値を永続化します。

関連ガイド