轉自:http://www.ahlinux.com/shell/20239.html
0x01
/etc/profile:此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行,並從/etc/profile.d目錄的配置文件中收集shell的設置;
/etc/bashrc:為每一個運行bash shell的用戶執行此文件,當bash shell被打開時,該文件被讀取;
~/.bash_profile:每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,它設置一些環境變量,執行用戶的.bashrc文件;
~/.bashrc:該文件包含用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該文件被讀取;
~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件;
另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承/etc/profile中的變量,他們是“父子”關系;
~/.bash_profile是交互式、login方式進入bash運行的;
~/.bashrc是交互式、non-login方式進入bash運行的;通常二者設置大致相同,所以通常前者會調用后者;
0x02 Ubuntu下bash的幾個初始化文件
/etc/profile 全局(公有)配置,不管是哪個用戶,登錄時都會讀取該文件;
/etc/bashrc Ubuntu下沒有此文件,與之對應的是/etc/bash.bashrc,它也是全局的;bash執行時,不管是何種方式,都會讀取此文件;
~/.profile 若bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前兩者不存在,讀取~/.profile;另外,圖形模式登錄時,此文件將被讀取,即使存在~/.bash_profile和~/.bash_login;
~/.bash_login 若bash是以login方式執行時,讀取~/.bash_profile,若它不存在,則讀取~/.bash_login,若前兩者都不存在,則讀取~/.profile;
~/.bash_profile Ubuntu默認沒有此文件,可新建。只有bash是以login形式執行時,才會讀取此文件。通常該配置文件還會配置成去讀取~/.bashrc;
~/.bashrc 當bash是以non-login形式執行時,讀取此文件。若是以login形式執行,則不會讀取此文件;
~/.bash_logout 注銷時,且是login形式,此文件才會讀取。也就是說,在文本模式注銷時,此文件會被讀取,圖形模式注銷時,此文件不會被讀取。