站在用戶登錄的角度來說,shell分為兩種類型: 登錄式shell:如通過某終端登錄,使用su - username命令切換用戶。 非互動式shell:如使用su username命令切換用戶;圖形終端下打開命令終端;shell腳本。 更簡單但不精確的區分方法是:不需要輸入賬號密碼才能登陸的shel ...
站在用戶登錄的角度來說,shell分為兩種類型:
登錄式shell:如通過某終端登錄,使用su - username命令切換用戶。
非互動式shell:如使用su username命令切換用戶;圖形終端下打開命令終端;shell腳本。
更簡單但不精確的區分方法是:不需要輸入賬號密碼才能登陸的shell的都是非互動式shell,如子shell、腳本shell、圖形終端下打開的命令視窗,但su username除外。
bash的環境配置文件:
全局配置:/etc/profile、/etc/profile.d/*.sh、/etc/bashrc。
個人配置:~/.bash_profile、~/.bashrc。
讀取和執行這些環境配置文件是有順序的,如果設置有衝突,則後讀取的配置文件覆蓋先讀取的。
讀取配置文件流程:
登錄式shell讀取環境配置文件的順序是:
(1)/etc/profile-->/etc/profile.d/*.sh
(2)~/.bash_profile-->~/.bashrc-->/etc/bashrc即先讀取全局配置文件/etc/profile,再讀取用戶配置文件~/.bash_profile。但/etc/profile文件會調用/etc/profile.d/目錄下的所有.sh文件,~/.bash_profile會調用~/.bashrc文件,~/.bashrc又會調用/etc/bashrc文件。其實/etc/bashrc還會調用/etc/profile.d/*.sh,但不會重覆設置已設置過的選項。
非登錄式shell讀取環境配置文件的順序是:
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
如圖:
也就是說:
/etc/profile:任意用戶登陸時讀取。非登錄式shell不會讀取。
~/.bash_profile:對應用戶登陸時讀取,用以配置將要打開的bash shell。非登錄式shell不會讀取。
~/.bashrc:關於bash shell的配置,對應的用戶每次打開一個shell都會讀取該文件,因為登錄式或非登錄式shell都會讀取該文件。
/etc/bashrc:(所有用戶)每次打開一個shell(登錄式或非登錄式)都會讀取該文件。
回到系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/7229025.html