1. 程式人生 > >Linux啟動初始化配置文件淺析

Linux啟動初始化配置文件淺析

文本模式 設定 input 其它 ubunt 文檔 登錄 終端 bash

轉自:http://blog.51cto.com/19055/1144600

1)/etc/profile 登錄時,會執行。
全局(公有)配置,不管是哪個用戶,登錄時都會讀取該文件。
(2)/ect/bashrc Ubuntu沒有此文件,與之對應的是/ect/bash.bashrc
bash.bashrc 是交互式shell的初始化文件。
(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 shell的bash信息,當該用戶登錄時以及每次打開新的shell時,該文件被讀取.
當 bash是以non-login形式執行時,讀取此文件。若是以login形式執行,則不會讀取此文件。
(7)~/.bash_logout
註銷時,且是longin形式,此文件才會讀取。也就是說,在文本模式註銷時,此文件會被讀取,圖形模式註銷時,此文件不會被讀取。
補充一點,/etc/rc.local是系統shell會執行的文件,linux啟動後會退出的;/etc/profile 或 /etc/bash.bashrc是用戶shell會的配置,我們一般的Shell是用戶Shell的子進程,而非系統shell的子進程,所以如果在 /etc/rc.local中指定"alias ll=‘ls -a‘"這樣的別名,對登錄系統後的shell是沒用的。
某網友總結如下:
/etc/profile,/etc /bashrc 是系統全局環境變量設定
/etc/profile與/etc/bashrc的區別?
前一個主要用來設置一些系統變量,比如JAVA_HOME等等,後面一個主要用來保存一些bash的設置.
~/.profile,~ /.bashrc用戶家目錄下的私有環境變量設定
當登入系統時候獲得一個shell進程時,其讀取環境設定檔有三步
1 首先讀入的是全局環境變量設定檔/etc/profile,然後根據其內容讀取額外的設定的文檔,如
/etc/profile.d和 /etc/inputrc
2 然後根據不同使用者帳號,去其家目錄讀取~/.bash_profile,如果這讀取不了就讀取~/.bash_login,這個也讀取不了才會讀取
~/.profile,這三個文檔設定基本上是一樣的,讀取有優先關系
3 然後在根據用戶帳號讀取~/.bashrc
至於~/.profile與~/.bashrc的區別,都具有個性化定制功能
~/.profile可以設定本用戶專有的路徑,環境變量,等,它只能登入的時候執行一次
~/.bashrc也是某用戶專有設定文檔,可以設定路徑,命令別名,每次shell script的執行都會使用它一次
下面是幾個例子:
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,則bash是lonin的,它將順序讀取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。
(2)如果沒有帶-l參數,則bash是non-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.sh,sh a.sh(這個不屬於bash shell),則不會讀取上面的任何文件。
7. 上面的例子凡是讀取到~/.bash_profile的,若該文件不存在,則讀取~/.bash_login,若前兩者不存在,讀取~ /.profile。

Linux啟動初始化配置文件淺析