Centos環境變量文件的讀取流程
首先說一下login shell和non-login shell的區別。所謂login shell簡單來說就是需要輸入用戶名、密碼的登錄方式;而non-login shell的登錄方式就是不需要輸入用戶名、密碼的登錄方式。舉個更具體的例子,當你不管登錄到tty1~tty6那個界面輸入賬戶密碼,這就是login shell;而當你登錄有Xwindow的級別,當你右鍵新建一個命令終端時,此時就是non-login shell。
login shell
上流程圖:
/etc/profile--------------------------------------------------->~/.bash_profile---------------->開始操作 bash
| |
| |
|- - ->/etc/inputrc |- - ->~/.bashrc
| |
|- - ->/etc/profile.d/*.sh <- - - - - - - - - - - - - - - - -/etc/bashrc
|
/etc/sysconfig/i18n
大致流程就是這樣的,實線方向是主流程,虛線是文件的調用。
login shell 在啟動的時候,一定會讀取兩個配置文件:/etc/profile、~/.bash_profile(或 ~/.bash_login 或 ~/.profile)
一、/etc/profile
這個文件是系統的整體設定,也是每個使用者登錄 bash 的時候一定會讀取的配置文件。主要有一下幾個變量:
PATH:環境變量。會依據 UID 決定是否要包含 sbin 的系統目錄
MAIL:依據 UID 決定使用者的郵箱
USER:用戶名
HOSTNAME:主機名
HISTSIZE:歷史命令記錄數
/etc/profile 文件還會還會調用其他的文件,包括以下文件:
- /etc/inputrc
自定義按鍵輸入功能。 - /etc/profile.d/*.sh
bash 窗口的顏色、語系、命令別名等的一些設定。
當你需要自定義一些整體環境變量時,就可以在這個目錄下新建一個以.sh結尾的文件。
- /etc/sysconfig/i18n
語系設定
二、~/.bash_profile
bash 在讀取完整體環境設定的 /etc/profile 並呼叫其他配置文件之後,接下來會讀取使用者的個人配置文件。在 login shell 的環境下,讀取的個人配置文件主要有以下三個:
1.~/.bash_profile
2.~/.bash_login
3.~/.profile
bash 只會讀取上面文件中的一個,而且讀取的優先級 1 > 2 > 3。
.bash_profile文件的內容,主要在PATH路徑上添加了/bin路徑;且如果存在~/.bashrc還會去讀取~/.bashrc
三、~/.bashrc
主要的定義了rm、cp、mv三個命令別名,並調用/etc/bashrc
四、/etc/bashrc
這個文件主要設置了umask的值變量PS1的值。
如果這個文件丟失,那麽,你的界面提示符就是變成這樣,因為你的PS1變量的值沒有設置:
五、其他的配置文件
1、~/.history 存儲了你的歷史命令
2、~/.bash_logout 可以自定義註銷時自動執行的操作
non-login shell
弄清楚了login shell的登錄流程,那麽non-login shell的登錄順序就很好理解了。
non-login方式登錄時是直接從~/.bashrc往後讀取的。
所以如果你要設置自己的環境變量,只需要寫到~/.bashrc文件裏面就可以了
Centos環境變量文件的讀取流程