
如何為每個使用者設定一個獨立於所使用的 shell 的永久環境變數(bash
、zsh
和fish
)?
答案1
編輯:根據設定環境變數的最佳發行版/與 shell 無關的方法是什麼?,對此的最佳解決方案是~/.pam_environment
編輯:還原到 hacky 解決方案,因為~/.profile
並非所有 shell 都讀取:
所有shell原始碼/etc/profile
。
這意味著/etc/profile
,你可以放一行像
. $HOME/.custom-profile
~/.custom-profile
然後,您可以為每個用戶添加變量
答案2
所有 shell 都會讀取不同的每個使用者設定檔(zsh:~/.profile、bash:~/.bash_profile、csh 只有一個 rc 文件,等等)。所以你必須改變所有這些潛在的候選人。
然而,大多數 shell 至少會退回到讀取 ~/.profile (感謝 @terdon 指出了這一點!),所以這就是您可以放置導出的位置。
由於「登入」通常是由能夠更改其 uid 和 gid 的進程(通常:以 root 身分執行的登入管理員)完成的,因此由這些程式來定義生成程式的環境(例如 shell)。
但是:有不只一個登入管理員(您的GDM/lightdm/KDM/... 視覺化登入管理器、getty、logind/loginct、ssh、getty...),而且它們從不同的檔案讀取配置,因此沒有一致的方法那裡也有。