.bash_profile 和 .bashrc

你是否在Linux/Mac系統下設置環境變量的時候,爲到底設置在哪個文件(.bash_profile ? .bashrc ?還是其他)而感到困惑?

首先,要我們要區分 login shell、non-login shell。

login shell:當你通過console進行用戶名/密碼登錄(不管是本地還是遠程登錄)的時候,.bash_profile會在提示語出現之前被執行。

non-login shell:當你已經登入系統、在可視化界面(像KDE、Gnome諸如此類)下打開一個新的命令窗口(xterm)的時候,.bashrc 在你打開新窗口(準確說是執行類似/bin/bash)的時候被執行。

 

他們之間有何區別

當知道以上信息的時候,你可以根據實際需要來決定放在哪個文件,那麼設置環境變量似乎兩者皆可行,只是設置環境變量的時間點不一樣。

 

Mac os 是個例外

Mac OS X(最新的系統我晚點試試,這是我找文章的時候路過的筆記)的 Terminal.app執行的是上述所說的結合體:當每次打開桌面終端的時候都會去執行login shell。順帶說一句,其他的仿真終端也可能會這樣幹,但是大多數不會。

 

建議

把以下添加到.bash_profile文件當中:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

然後每次從console登陸之後會正常調用.bashrc

 

參考文章:http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章