プロセス環境とは?継承される設定
プロセス環境とは、プログラムが持ち運ぶ環境変数の集合で、起動時に親プロセスから継承されたものです。
すべてのプロセスは環境の中で動きます。それは起動時に受け取った名前付き変数の集合です。この環境は、設定がシェルからそれが実行するプログラムへ、そしてあるCIステップのシェルからそれが呼び出すツールへと流れる仕組みです。継承を理解すると、なぜ一部の変数は見えて他は見えないのかが分かります。
環境とは何か
環境は、プロセスに付随するキーと値のペアのリストです。プロセスが子を起動すると、子はコピーを受け取ります。このスナップショットの意味論により、親での後の変更は既に実行中の子には届きません。
継承の仕組み
子は起動時に親のエクスポートされた変数のコピーを受け取ります。子が行う変更はその子にローカルなままです。だからこそ、サブプロセス内で設定された変数は、それを起動したシェルに戻って現れないのです。
環境の確認
envまたはprintenvはすべての環境変数を一覧表示します。- 引数なしの
exportはエクスポートされたシェル変数を表示します。 - プログラムは言語のAPIを通じて自身の環境を読み取ります。
エクスポート済み対ローカル
エクスポートされた変数だけが子に渡される環境に入ります。素のシェル変数は現在のシェルでは見えますが継承されず、これは「なぜツールが私の変数を見られないのか」という混乱の頻繁な原因です。
CIにおける環境
CIは、プラットフォーム変数、設定した変数、シークレットから各ステップの環境を構築します。各ステップは新しいプロセスなので、環境の変更は自動的には永続しません。値を後続のステップに引き継ぐには、特別なファイルに書き込みます。
マネージドrunnerでの一貫した環境
Latchkeyのrunnerでは、各ステップがクリーンで定義された環境を受け取るため、buildは再現可能です。ステップ間で値を共有するには、ステップ内で下方向にのみ流れる継承に頼るのではなく、プラットフォームの環境ファイルに書き込んでください。
重要なポイント
- プロセス環境とは、親から継承された変数の集合です。
- 子は起動時にコピーを受け取り、その変更は親に流れ戻りません。
- CIでは各ステップが新しいプロセスなので、env fileを介して値を永続化します。
関連ガイド
What Is an Environment Variable? Config in the ShellAn environment variable is a named value processes inherit from their parent. Learn how env variables work an…
What Is a Process? A Running Program ExplainedA process is a running instance of a program with its own memory and resources. Learn how processes work and…
What Is the GITHUB_ENV File in GitHub Actions?GITHUB_ENV is a file a step writes to in order to set environment variables that persist for the remaining st…