すべてのプロセスに継承するように環境変数を設定できます~/.profile
。これは、デスクトップ環境(gnome-shellなど)がログイン時にこのファイルを実行するために機能します。その後、gnome-shellは独自の環境変数を更新します。すべてのプロセス(firefox、xterm、emacs)はgnome-shellを祖先として持っているので、これらの環境変数を継承します。
ログイン後にこのプロセス(gnome-shell)で環境変数を更新する方法はありますか?私は次のことを想像しています
$ xdg-set FOO=BAR
その後、新しい端末ですぐに見ることができます
$ echo $FOO
BAR
答え1
環境は、コマンドライン引数と同様の方法で新しいプロセスに渡されます。環境は新しいプロセスのアドレス空間にコピーされます。 「参照」として渡されないため、親プロセス環境に対するいくつかの変更は子プロセスに反映されません。
これは、プロセス自体を操作し、プロセスがシェルで変数を設定するなどの方法を提供する場合にのみプロセス環境を変更できることを意味します。これらの環境の変化は、通常、プロセスを作成できるすべての子プロセスに反映されます。