fork()
私たちは、プロセスの環境変数のセットがシステムコールの後と以前の一定期間だけ変更される可能性があることを知っていますexec()
。たとえば、これらの操作は、適切なAPIを介してのみ親プロセスから子プロセスとして実行できます。
export
ただし、組み込みのbashを使用すると、bashは何らかの方法で現在のプロセス(シェルインスタンス)の環境変数を変更します。
あなたはそうしなかった方法?卑劣な手段を使用しましたか?
答え1
bash
メモリ内の変数を更新するだけです。名前にもかかわらず、環境変数は値が子プロセスの環境にコピーされるシェル変数にすぎません。シェルインスタンスが起動すると、=
「name」(最初のエントリの前の部分)が有効なシェル識別子である環境文字列を使用して、エクスポートプロパティが設定されたシェル変数を生成します。新しいプロセスが開始されると、エクスポートされた属性セット(環境または後で設定)を持つすべてのシェル変数がプロセス環境に追加されます。