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