登入後在桌面進程中設定環境變數

登入後在桌面進程中設定環境變數

我可以設定環境變數由所有進程繼承~/.profile。這是有效的,因為桌面環境(例如 gnome-shell)在登入時會執行此檔案。然後 gnome-shell 更新它自己的環境變數。因為每個進程(firefox、xterm、emacs)都以 gnome-shell 作為祖先,所以它們繼承了這些環境變數。

有沒有辦法在登入後更新此進程(gnome-shell)中的環境變數?我設想類似的東西

$ xdg-set FOO=BAR

然後在新終端機中您可以立即看到

$ echo $FOO
BAR

答案1

環境以與命令列參數類似的方式傳遞給新進程:它們被複製到新進程的位址空間。它們不是「透過引用」傳遞的,因此某些祖先進程環境的變更不會反映在後代進程中。

這意味著您只能透過操作進程本身來更改進程的環境,並且只有當進程提供了這樣做的方法時,例如在 shell 中設定變數。環境中的這種變化通常會反映在該進程可能產生的任何子進程中。

相關內容