bash的幾個初始化文件

今天在學習Linux環境變量相關知識時,發現教程上初始化過程讀取的文件和我使用機器讀取的文件不一樣!后來發現教程使用的是<code>Bourne Shell</code>,而我使用的是<code>bash shell</code>!于是就上網查詢<code>bash shell</code> 的初始化過程!轉自:Linux社區

文件的加載時機

  1. /etc/profile
    全局(公有)配置,不管是哪個用戶,登錄時都會讀取該文件。
  2. /ect/bashrc
    Ubuntu沒有此文件,與之對應的是/ect/bash.bashrc
    它也是全局(公有)的
    bash執行時,不管是何種方式,都會讀取此文件。
  3. ~/.profile
    bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前兩者不存在,讀取~/.profile。
    另外,圖形模式登錄時,此文件將被讀取,即使存在~/.bash_profile~/.bash_login
  4. ~/.bash_login
    bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前兩者不存在,讀取~/.profile
  5. ~/.bash_profile
    Unbutu默認沒有此文件,可新建。
    只有bash是以login形式執行時,才會讀取此文件。通常該配置文件還會配置成去讀取~/.bashrc
  6. ~/.bashrc
    bash是以non-login形式執行時,讀取此文件。若是以login形式執行,則不會讀取此文件。
  7. ~/.bash_logout
    注銷時,且是longin形式,此文件才會讀取。也就是說,在文本模式注銷時,此文件會被讀取,圖形模式注銷時,此文件不會被讀取。

下面是在本機的幾個例子:

  1. 圖形模式登錄時,順序讀取:/etc/profile~/.profile
  2. 圖形模式登錄后,打開終端時,順序讀取:/etc/bash.bashrc~/.bashrc
  3. 文本模式登錄時,順序讀取:/etc/bash.bashrc/etc/profile~/.bash_profile
  4. 從其它用戶su到該用戶,則分兩種情況:
    (1)如果帶-l參數(或-參數,--login參數),如:su -l username,則bashlogin的,它將順序讀取以下配置文件:/etc/bash.bashrc/etc/profile~/.bash_profile
    (2)如果沒有帶-l參數,則bashnon-login的,它將順序讀取:/etc/bash.bashrc~/.bashrc
  5. 注銷時,或退出su登錄的用戶,如果是longin方式,那么bash會讀取:~/.bash_logout
  6. 執行自定義的shell文件時,若使用bash -l a.sh的方式,則bash會讀取行:/etc/profile~/.bash_profile,若使用其它方式,如:bash a.sh./a.shsh a.sh(這個不屬于bash shell),則不會讀取上面的任何文件。
  7. 上面的例子凡是讀取到~/.bash_profile的,若該文件不存在,則讀取~/.bash_login,若前兩者不存在,讀取~/.profile
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容