為什么每次打開(kāi)Xshell終端,都要source一下.bashrc?
為了弄明白這個(gè)問(wèn)題折剃,首先测蹲,我們需要搞明白Linux啟動(dòng)時(shí)讀取配置文件的順序。
在剛登錄Linux時(shí)崭放,首先啟動(dòng)/etc/profile
文件哨苛,然后再啟動(dòng)用戶目錄下的 ~/.bash_profile
、~/.bash_login
或 ~/.profile
文件中的其中一個(gè)币砂,
執(zhí)行的順序為:~/.bash_profile
建峭、~/.bash_login
、 ~/.profile
决摧。
如果 ~/.bash_profile
文件存在的話迹缀,一般還會(huì)執(zhí)行 ~/.bashrc
文件。
因?yàn)樵?code>~/.bash_profile文件中一般會(huì)有下面的代碼:
if [ -f ~/.bashrc ] ; then
source .bashrc
fi
~/.bashrc
中蜜徽,一般還會(huì)有以下代碼:
if [ -f /etc/bashrc ] ; then
source .bashrc
fi
所以祝懂,~/.bashrc
會(huì)調(diào)用/etc/bashrc
文件。最后拘鞋,在退出shell時(shí)砚蓬,還會(huì)執(zhí)行 ~/.bash_logout
文件。
總結(jié)一下盆色,這些配置文件的執(zhí)行順序?yàn)?/strong>:/etc/profile
→ (~/.bash_profile | ~/.bash_login | ~/.profile)
→~/.bashrc
→/etc/bashrc
→ ~/.bash_logout
接下來(lái)灰蛙,我們就來(lái)解釋一下為什么每次打開(kāi)Xshell終端祟剔,都要source一下.bashrc:
假如在~/.bash_profile
文件中沒(méi)有下面的代碼:
if [ -f ~/.bashrc ] ; then
source .bashrc
fi
那么linux就不會(huì)自動(dòng)執(zhí)行~/.bashrc文件,所以你每次登陸的時(shí)候都要手動(dòng)輸入source ~/.bashrc
摩梧。
解決方法
接下來(lái)物延,為了讓你看得更明白,我重新說(shuō)一下如何解決每次打開(kāi)Xshell終端仅父,都要source一下.bashrc這個(gè)問(wèn)題:
vim ~/.bash_profile
在文件內(nèi)部輸入
# 加載.bashrc文件
if test -f .bashrc ; then
source .bashrc
fi
然后按ESC鍵叛薯,輸入:wq
保存并退出即可。
補(bǔ)充說(shuō)明:關(guān)于各個(gè)配置文件的作用域
/etc/profile:
此文件為系統(tǒng)的每個(gè)用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時(shí),該文件被執(zhí)行. 并從/etc/profile.d目錄的配置文件中搜集shell的設(shè)置笙纤。
/etc/bashrc:
為每一個(gè)運(yùn)行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開(kāi)時(shí),該文件被讀群牧铩(即每次新開(kāi)一個(gè)終端,都會(huì)執(zhí)行bashrc)省容。
~/.bash_profile:
每個(gè)用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時(shí),該文件僅僅執(zhí)行一次抖拴。默認(rèn)情況下,設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件。
~/.bashrc:
該文件包含專用于你的bash shell的bash信息,當(dāng)?shù)卿洉r(shí)以及每次打開(kāi)新的shell時(shí),該該文件被讀取腥椒。
~/.bash_logout:
當(dāng)每次退出系統(tǒng)(退出bash shell)時(shí),執(zhí)行該文件. 另外,/etc/profile中設(shè)定的變量(全局)的可以作用于任何用戶,而~/.bashrc等中設(shè)定的變量(局部)只能繼承 /etc/profile中的變量,他們是"父子"關(guān)系阿宅。