Mac下配置環境變數重啟後不生效解決(.bash_profile vs .bashrc)(bash/zsh下不載入.bashrc問題解決)...

weixin_34127717發表於2017-01-13

參考上一篇文章說明:http://www.cnblogs.com/EasonJim/p/6283094.html

得知載入順序如下:

/etc/profile

/etc/paths

~/.bash_profile

~/.bash_login

~/.profile

~/.bashrc

當然/etc/profile和/etc/paths是系統級別的,系統啟動就會載入,後面幾個是當前使用者級的環境變數。後面3個按照從前往後的順序讀取,如果~/.bash_profile檔案存在,則後面的幾個檔案就會被忽略不讀了,如果~/.bash_profile檔案不存在,才會以此類推讀取後面的檔案。~/.bashrc沒有上述規則,它是bash shell開啟的時候載入的。

也就是說在當前使用者的目錄下,如果又了.bash_profile檔案就不會去載入.bashrc檔案。

所以如果要能正常載入.bashrc檔案,需要在.bash_profile檔案的最末尾上加入如下語句:

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

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

 

然而,這個修改只是正對base的,如果你沒有修改過,上面的方法預設重啟後就能生效。

但是,現在的mac上有些使用zsh這個作為預設的shell,所以,在啟動shell時,預設不會按上面的套路去載入。

如果想要正常載入.bashrc檔案時,就要找到使用者目錄下的.zlogin檔案加入如下程式碼:

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

即可生效。

參考思路:

http://stackoverflow.com/questions/4493063/best-practice-for-bash-start-up-files-on-a-mac?answertab=active#tab-top

http://superuser.com/questions/866683/iterm-zsh-not-reading-bashrc-or-bash-profile

==>如有問題,請聯絡我:easonjim#163.com,或者下方發表評論。<==

相關文章