Gnome

正確設置環境

  • May 16, 2011

我正在使用 zsh 和 gdm 來執行 gnome。前段時間我發現變數設置不正確。例如 LANG/LC_ALL 不正確(""而不是en_GB.UTF-8)。

我拆分.zshrc.zshrc.profile。在後者中,我設置了環境變數,但是如何在會話開始之前設置變數?我嘗試了一些選擇(.xinitrc, .xsessionrc),但似乎沒有一個有效。

編輯澄清 - 我使用.profile手動採購它.zshrc。無論如何,它不會改變問題。

最簡單的方法是發明一台時間機器,拜訪設計 shell 啟動文件的各種人,並告訴他們清楚地區分三件事:

  • 會話設置,例如環境變數;
  • 會話啟動,例如,啟動命令行 shell 或視窗管理器或執行startx
  • shell 初始化,例如別名、提示、鍵綁定。

以可移植的方式正確獲取 session 與 shell 並不難:登錄時初始化進入.profile(or .zprofile, or .login),shell 初始化進入.bashrcor .zshrc。我之前寫過關於zsh 與其他 shell的比較,.bash_profile更多關於可移植性(主要是關於 bash)更多關於誰在閱讀..profile

剩下的問題是區分會話設置和會話啟動。大多數情況下,~/.profile在登錄時執行,可以兼作兩者,但也有例外:

  • 如果您的登錄 shell 是 (t)csh 或 zsh,~/.login並且~/.zprofile來源而不是~/.profile. 同樣適用於 bash 和~/.bash_profile,但這很容易通過~/.profile~/.bash_profile.

  • 如果您在顯示管理器(xdm、gdm、kdm、…)下登錄,您是否~/.profile被讀取取決於程序的版本、您的發行版(Linux 或其他)以及您選擇的會話類型。

    • 如果您指望顯示管理器為您啟動會話,您.profile必須設置環境變數但不能啟動會話(例如視窗管理器)。
    • X 會話的傳統配置文件是~/.xsession,同時進行會話設置和會話啟動。所以文件本質上可以是. ~/.xsession; . ~/.xinitrc. ~/.profile之前的一些發行版源~/.xsession。僅當您從顯示管理器中選擇“自定義”會話時,現代發行版才會提供源~/.xsession,並且此類會話並不總是可用。
    • 您的會話管理器可能有自己的設置環境變數的方式。(這是桌面環境的可選部分,由您通過配置文件或登錄時選擇會話類型來選擇;不要將其與顯示管理器提供的會話啟動腳本混淆,後者在您的使用者下執行,但在整個系統範圍內選擇。是的,這是一團糟。)

總之,~/.profile是環境變數的正確位置。如果它沒有被讀取,請嘗試從那裡獲取它~/.xsession(並從那裡啟動您的 X 程序),或尋找特定於系統的方法(這可能取決於您的發行版、顯示管理器(如果有)、會話類型(如果顯示管理器)和桌面環境或會話管理器)。

引用自:https://unix.stackexchange.com/questions/4621