ubuntu 配置檔案揭祕
測試環境ubuntu 11.10
實現過程如下:
1.實驗檔案 /etc/environment, /etc/bash.bashrc, /etc/profile, ~/.bashrc, ~/.profile, ~/.bash_logout, ~/.bash_history2.在實驗檔案最後分別增加自定義變數,並增加echo顯示檔名。
3.CTL+ALT+F1方式切換到BASH方式登入
4.檢視echo顯示結果,echo $自定義變數
5.執行bash,免登入方式開啟子bash shell。
6.重複第4步過程。
7.exit,退出子bash shell
8.exit,退出登入
實驗結果如下:
1./etc/environment中的echo沒有顯示,但是定義的變數可以在父/子bash shell中使用,呼叫export發現,該變數被自動的export。
2.密碼登入父bash shell時,顯示結果如下:
bash.bashrc
profile
.bashrc
.profile
定義的變數可以使用,但沒有被自動export。
3.bash命令免登入進入子bash shell時,顯示結果如下:
bash.bashrc
.bashrc
定義的變數可以使用,但沒有被自動export。
4.exit命令退出子bash shell時,無顯示
5.exit命令退出父bash shell時,顯示:
.bash_logout
實驗結果分析:
1. /etc/environment 設定整個系統的環境【主要PATH,初始語言LANG】,由kernel載入(第一個bash shell執行前),裡面定義的變數將作用於所有的子bash shell(自動export),此時bash shell尚未就位,最好不要修改。
2. /etc/bash.bashrc 相當於很多linux下的/etc/bashrc,用來設定bash的變數【sudo,xterm等】,所有bash shell建立的時候載入,裡面定義的變數將作用於本bash session。一般情況下不需要修改。
3. /etc/profile 設定全部使用者的配置資訊【PS1等】,在任何使用者密碼登入後,該檔案執行,非密碼登入時,不再呼叫。該檔案會自動呼叫/etc/bash.bashrc。此檔案會自動呼叫/etc/profile.d/目錄下的所有shell指令碼,如果有全部使用者都需要的變數,比如JAVA_HOME,可以考慮建立一個指令碼放到該目錄下。另外,如果變數需要在子shell中使用,需要自行新增export。
4. ~/.bashrc 用來設定使用者自定義的bash變數【自定義PS1,alias等】,在bash shell建立的時候載入,裡面定義的變數將作用於本bash session。使用者可以通過修改此檔案定製自己的bash。另外,也可以將alias寫到~/.bash_aliases檔案中,~/.bashrc會自動載入該檔案。
5. ~/.profile 用來設定使用者自定義的配置資訊,該檔案會自動載入~/.bashrc,並且重置使用者語言等變數。使用者可以通過修改此檔案,修改變數或者export新變數。
7. 登入和免登入bash方式都會呼叫/etc/bash.bashrc和~/.bashrc。只有登入方式bash才會呼叫/etc/profile和~/.profile(包括su)。呼叫順序為全域性配置操作完之後執行個人配置。
8. ~/.bash_history 用來記錄使用者上一次登入的命令記錄(預設1000條)。黑客的最愛。想讀本次命令記錄用history。