啟動bash shell的三種方式下,檢查的開機檔案,
啟動bash shell的三種方式
1、登入時當做預設登入shell
2、作為非登入shell的互動式shell
3、作為運行指令碼的非互動shell
一、登入shell
登入Linux系統時,bash shell會作為登入shell啟動,登入shell會從4個不同的開機檔案裡讀取命令,下面是bash shell處理這些檔案的次序:
1./etc/profile
2.$HOME/.bash_profile
3.$HOME/.bash_login
4.$HOME/.profile
其中/etc/profile檔案是系統預設的bash shell的主開機檔案,系統上的每個使用者登入時都會執行這個開機檔案,另外三個開機檔案是使用者專有的。例如,每個使用者可以配置自己專屬的jdk和tomcat等。
1)、/etc/profile
profile檔案有一個複雜的特性,有個for語句,會逐一訪問/etc/profile.d目錄的每個檔案,它為Linux系統提供了一個集中存放使用者登入時要執行的應用專屬的開機檔案的地方。這些基本跟系統的特定應用有關,大部分應用會建立兩個開機檔案,一個給bash shell用,一個給c shell用,
2)、$HOME目錄下的開機檔案
大多數Linux發行版只用這三個開機檔案中的一個;每個使用者可以編輯這些檔案並添加自己的環境變數來給她們啟動每個bash shell會話。
.bash_profile檔案:此檔案會先去檢查HOME目錄下是否還有一個叫.bashrc的開機檔案,如果有的話,開機檔案會先去執行.bashrc檔案中的命令,然後將一個目錄添加到了PATH環境變數。
二、互動式shell
如果bash shell不是登入系統時啟動該的,比如在命令列提示符下輸入bash命令啟動,這個啟動的shell稱作互動式shell,這種情況下不會去啟動/etc/profile檔案,而會去使用者的HOME目錄下檢查bashrc是否存在。此檔案有兩個作用:
1.查看/etc目錄下的共用bashrc檔案
2.為使用者提供了一個定製自己的命令別名和私人指令碼函數的地方。
通用的/etc/bashrc開機檔案會被系統上每個啟動互動式shell會話的使用者執行
三、非互動式shell
系統執行shell指令碼時用的就是這種shell。這種情況下不需要擔心它沒有命令列提示符,但當每次在系統上運行指令碼時仍然要運行特定的啟動命令,為了處理這種情況,bash shell提供了BASE_ENV環境變數,當shell啟動一個非互動式shell進程時,它會檢查這個環境變數來查看要執行的開機檔案,如果有指定的,shell會執行檔案裡的命令。