Linux系統(tǒng)中三類重要文件的作用與區(qū)別
Linux系統(tǒng)中,有三種文件類型出現(xiàn)的非常頻繁,那就是profile、bash_profile、bashrc文件。
因?yàn)槊Q的緣故,很多人會(huì)把這三類文件的作用記混,因此我們今天就來詳細(xì)盤點(diǎn)一下這三類文件的作用及區(qū)別。
1. profile文件
1.1 profile文件的作用
profile(/etc/profile),用于設(shè)置系統(tǒng)級(jí)的環(huán)境變量和啟動(dòng)程序,在這個(gè)文件下配置會(huì)對(duì)所有用戶生效。
當(dāng)用戶登錄(login)時(shí),文件會(huì)被執(zhí)行,并從/etc/profile.d目錄的配置文件中查找shell設(shè)置。
1.2 在profile中添加環(huán)境變量
一般不建議在/etc/profile文件中添加環(huán)境變量,因?yàn)樵谶@個(gè)文件中添加的設(shè)置會(huì)對(duì)所有用戶起作用。
當(dāng)必須添加時(shí),我們可以按以下方式添加:
如,添加一個(gè)HOST值為magedu.com的環(huán)境變量:
export HOST=magedu.com
添加時(shí),可以在行尾使用;號(hào),也可以不使用。
一個(gè)變量名可以對(duì)應(yīng)多個(gè)變量值,多個(gè)變量值需要使用:進(jìn)行分隔。
添加環(huán)境變量后,需要重新登錄才能生效,也可以使用source命令強(qiáng)制立即生效:
source /etc/profile
查看是否生效可以使用echo命令:
$ echo $HOST
magedu.com
2. bashrc文件
bashrc文件用于配置函數(shù)或別名。bashrc文件有兩種級(jí)別:
系統(tǒng)級(jí)的位于/etc/bashrc、用戶級(jí)的位于~/.bashrc,兩者分別會(huì)對(duì)所有用戶和當(dāng)前用戶生效。
bashrc文件只會(huì)對(duì)指定的shell類型起作用,bashrc只會(huì)被bash shell調(diào)用。
3. bash_profile文件
bash_profile只對(duì)單一用戶有效,文件存儲(chǔ)位于~/.bash_profile,該文件是一個(gè)用戶級(jí)的設(shè)置,可以理解為某一個(gè)用戶的profile目錄下。
這個(gè)文件同樣也可以用于配置環(huán)境變量和啟動(dòng)程序,但只針對(duì)單個(gè)用戶有效。
和profile文件類似,bash_profile也會(huì)在用戶登錄(login)時(shí)生效,也可以用于設(shè)置環(huán)境變理。
但與profile不同,bash_profile只會(huì)對(duì)當(dāng)前用戶生效。
4. 差異總結(jié)
這三種文件類型的差異用一句話表述就是:
/etc/profile,/etc/bashrc 是系統(tǒng)全局環(huán)境變量設(shè)定;~/.profile,~/.bashrc用戶家目錄下的私有環(huán)境變量設(shè)定。
當(dāng)?shù)侨胂到y(tǒng)時(shí)候獲得一個(gè)shell進(jìn)程時(shí),其讀取環(huán)境設(shè)定檔如下:
4.1 首先讀入全局環(huán)境變量設(shè)定檔/etc/profile,然后根據(jù)其內(nèi)容讀取額外的設(shè)定的文檔,如/etc/profile.d和/etc/inputrc;
4.2 根據(jù)不同使用者帳號(hào),于其家目錄內(nèi)讀取~/.bash_profile;
讀取失敗則會(huì)讀取~/.bash_login;
再次失敗則讀取~/.profile(這三個(gè)文檔設(shè)定基本上無差別,僅讀取上有優(yōu)先關(guān)系);
4.3 ***,根據(jù)用戶帳號(hào)讀取~/.bashrc。
至于~/.profile與~/.bashrc都具有個(gè)性化定制功能,但~/.profile可以設(shè)定本用戶專有的路徑、環(huán)境變量等,它只能登入的時(shí)候執(zhí)行一次。
~/.bashrc也是某用戶專有設(shè)定文檔,可以設(shè)定路徑、命令別名,每次shell script的執(zhí)行都會(huì)使用它一次。