在登錄Linux時(shí)要執(zhí)行文件的過(guò)程如下:
在剛登錄Linux時(shí),首先啟動(dòng) /etc/profile 文件,然后再啟動(dòng)用戶目錄下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一個(gè),執(zhí)行的順序?yàn)椋簙/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的話,一般還會(huì)執(zhí)行 ~/.bashrc文件。因?yàn)樵?~/.bash_profile文件中一般會(huì)有下面的代碼:
if [ -f ~/.bashrc ] ; then
. ./bashrc
fi
~/.bashrc中,一般還會(huì)有以下代碼:
if [ -f /etc/bashrc ] ; then
. /bashrc
fi
所以,~/.bashrc會(huì)調(diào)用 /etc/bashrc文件。最后,在退出shell時(shí),還會(huì)執(zhí)行 ~/.bash_logout文件。
執(zhí)行順序?yàn)椋?etc /profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout
#################################################################
1.登錄shell
所謂登錄shell,指的是當(dāng)用戶登錄系統(tǒng)時(shí)所取的那個(gè) shell。登錄shell屬于交互式shell。
登錄shell將查找4個(gè)不同的啟動(dòng)文件來(lái)處理其中的命令。 bash shell處理文件的順序如下:
1: /etc/profile
2:/etc/profile.d等待配置文件
3: $HOME/.bash_profile
4: $HOME/.bash_login
5 $HOME/.profile
/etc /profile是bash shell在系統(tǒng)上的主默認(rèn)啟動(dòng)文 件,系統(tǒng)上 每一個(gè)用戶在登陸時(shí)都將執(zhí)行此文件。
通過(guò)設(shè)置這個(gè)文件,
超級(jí)用戶可以為全系統(tǒng)內(nèi)的所有bash用戶建立默認(rèn)特征。不同 Linux版本在此文件放置的命令不盡相同,
在redflag中,該文件設(shè)置了幾個(gè)重要的變量,
如:PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC,詳情可以查看具體的文件。
其余3個(gè)文件具備相同的功能——提供特定于用戶的啟動(dòng)文件。大多 數(shù)Linux版本只使用其中之一。如:RedFlag使用.bash_profile ubuntu使用.profile .
shell 依次查找~/.bash_profile、
~/.bash_login、
~/.profile(~是用戶主目錄的速記符),
并執(zhí)行它找到的首個(gè)文件中的命令。
可以將命令放置在這些文件中以覆蓋掉/etc /profile文件中的默認(rèn)設(shè)置。
也就是后面的文件可以覆蓋或者修改前面的設(shè)置 。
2. 交互式非登錄shell
如果啟動(dòng)了一個(gè)bash shell而沒有等錄系統(tǒng)(如在CLI提示符中鍵入bash),
則啟動(dòng)了一個(gè)交互式非登錄shell.
而登錄shell的初始化文件(比如.bash_profile)通常會(huì)運(yùn)行這個(gè)文件。這樣,登錄shell和非登錄shell都可以使用.bashrc中的命令。
如以X Window環(huán)境登錄Linux時(shí),在X環(huán)境所起動(dòng)的終端,那些shell都是非登錄shell.
在交互式非登錄shell中并不執(zhí)行前面提到的初始化文件中的命令。然而,交互式非登錄shell從登錄shell繼承了由這些初始化文件設(shè)置的 shell變量。
(1) $HOME/.bashrc
交互式非登錄shell執(zhí)行~/.bashrc文件中的命令.在每次執(zhí)行shell腳本時(shí),都會(huì)重新讀取這個(gè)文件,所以是最完整的。
但是萬(wàn)事都不是一樣的,debain系列的是不同的,如ubuntu
/etc/profile-->/etc/environment-->$HOME/.profile
Ubuntu Linux系統(tǒng)環(huán)境變量配置文件介紹在Ubuntu中有如下幾個(gè)文件可以設(shè)置環(huán)境變量
/etc/profile:在登錄時(shí),操作系統(tǒng)定制用戶環(huán)境時(shí)使用的第一個(gè)文件 ,此文件為系統(tǒng)的每個(gè)用戶設(shè)置環(huán)境信息,當(dāng)用戶第一次登錄時(shí),該文件被執(zhí)行。
/etc /environment:在登錄時(shí)操作系統(tǒng)使用的第二個(gè)文件, 系統(tǒng)在讀取你自己的profile前,設(shè)置環(huán)境文件的環(huán)境變量。
~/.profile: 在登錄時(shí)用到的第三個(gè)文件 是.profile文件,每個(gè)用戶都可使用該文件輸入專用于自己使用的shell信息,當(dāng)用戶登錄時(shí),該文件僅僅執(zhí)行一次!默認(rèn)情況下,他設(shè)置一些環(huán)境變量,執(zhí)行用戶的.bashrc文件。
/etc/bashrc:為每一個(gè)運(yùn)行bash shell的用戶執(zhí)行此文件.當(dāng)bash shell被打開時(shí),該文件被讀取.
~/.bashrc:該文件包含專用于你的bash shell的bash信息,當(dāng)?shù)卿洉r(shí)以及每次打開新的shell時(shí),該該文件被讀取。