天天看點

shell登入模式及其相應配置檔案(轉)

  參考《linux指令、編輯器與shell程式設計》(清華大學出版社)

  當啟動shell時,它将運作啟動檔案來初始化自己。具體運作哪個檔案取決于該shell是登陸shell還是非登陸shell的互動方式(比如通過bash),又或者是一個非互動式shell(用來執行shell腳本)。要執行啟動檔案中的指令,使用者就必須具備讀的權限,而一般的Linux發行版本都會把對應的指令放在一些啟動檔案中。

1:互動式登陸shell

互動式登陸shell指的是當使用者登入系統時所用的那個shell(可以預設指定,如bash shell)。登入shell 将查找幾個不同的啟動檔案來處理其中的指令, bash shell 處理檔案的順序如下:

/etc/profile shell首先執行/etc/profile中的指令。設定這個檔案後,可以為系統内所有的bash使用者建立預設的特征(不同版本的Linux在此檔案放置的指令不盡相同);

~/.bash_profile、~/.bash_login、~/.profile 然後shell依次查找這些檔案,并執行它找到的第一個檔案中的指令。可以将指令放在這些檔案中,以重寫/etc/profile檔案中預設的設定;

~/.bash_logout 當使用者登出時,bash執行檔案~/.bash_logout中的指令,這個檔案包含了退出會話時執行的清理指令,如:删除臨時檔案等;

2:互動式非登陸shell

互動式非登陸shell指的是如果啟動了一個bash shell 而沒有等錄系統(如在CLI 提示符中鍵入bash),則啟動了一個互動式非登入shell。互動式非登入shell并不執行前面提到的啟動檔案中的指令,然而互動式非登陸shell從登入shell繼承了由這些啟動檔案設定的shell變量。

/etc/bashrc 盡管不是通過bash直接調用,但許多~/.bashrc檔案調用/etc/bashrc。這種設定使得超級使用者可以為系統内的非登陸shell建立預設屬性。

.bashrc 互動式非登陸shell執行~/.bashrc檔案中的指令,而登陸shell的啟動檔案(如.bash_profile)通常會運作這個檔案。這樣,登陸shell和非登陸shell都可以運作.bashrc中的指令了。

3:非互動式shell

非互動式shell指的是以shell script(腳本)方式運作。在這種模式在運作時shell 并不與使用者進行互動(除非在運作時需要使用者指定運作參數),而是讀取存放在檔案中的指令并執行它們。當它讀到檔案的結尾,shell 也就終止了。這些shell從登陸時就繼承了由這些啟動檔案設定的shell變量。

BASH_ENV 非互動式shell查找環境變量BASH_ENV(或者當作為sh調用時為的ENV),并執行由該變量命名的檔案中的指令。

http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580744.html

繼續閱讀