一、bash shell的分類:
登錄shell:用戶登錄linux主機時取得的shell.
非登錄shell:用戶登錄linux主機後(取得了登錄shell)由於需要啟動執行的shell,如:用su切換用戶後取得的shell;在登錄shell中
啟動的 csh shell;圖形用戶界面下啟動的終端等。
二、對於登錄shell
1、默認情況下,在shell下改變的變量、umask、alias、只在此次登錄中有效。一旦logout後再login,則 設定恢復初始值。
2、一個通過登錄而得到的shell,一般是用戶的初始shell.
3、在登錄shell下激活的shell采用登錄的shell的環境設定
4、登錄shell從配置文件中讀取其環境設定。
5、配置文件
全局配置文件
/etc/profile:此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行.
並從/etc/profile.d目錄的配置文件中搜集shell的設置.
/etc/bashrc: 為每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取。
局部配置文件
~/.bash_profile: 每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次! 默認情況下,
他 設置一些環境變量,執行用戶的.bashrc文件。
~/.bashrc: 該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該文件被讀取
6、全局配置文件對所有用戶起作用,而局部配置文件只對單用戶(擁有此局部配置文件,每個用戶都用 自己的局部配置文件)起作用
三、配置文件的執行順序
1、 登錄shell配置文件執行順序
/etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/.bashrc
2、非登錄shell配置文件執行順序
~/.bashrc-->/etc/.bashrc-->/etc/profile.d/*.sh
3、 注意:如果在不同的配置文件中設置相同的變量,則後面執行的配置文件中變量的值會覆蓋前面配置文件中同一變量的值。
四、其他的shell配置文件
~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件.
~/.bash_history:用戶login時自動讀取其中的內容並加載到內存hiatory記錄中,logout時將內存中的history記錄寫入其中
/etc/profile.d/*.sh:在/etc/profile中被執行,其中的環境設定,也會被全局引用