天天看點

自學Linux Shell6.3-系統環境變量持久化

6.3-系統環境變量持久化

在你登入Linux系統啟動一個bash shell時,預設情況下bash在幾個檔案中查找指令,這幾個檔案成為啟動檔案;

bash檢查的啟動檔案取決于你啟動bash shell的方式,啟動bash shell有3中方式:

  • 登入時當做預設登入shell;
  • 作為非登入shell的互動shell,在指令行中輸入bash;
  • 作為運作腳本的非互動shell,在shell腳本中執行shell;

1  登陸shell

當你登入Linux系統時,登陸了shell會從5個不同的啟動檔案裡讀取指令:

  • /etc/profile:預設bash shell的主啟動檔案,每個使用者登入都會執行這個啟動檔案;
  • $HOME/.bash_profile:使用者專用啟動檔案;
  • $HOME/.bashrc:使用者專用啟動檔案;
  • $HOME/.bash_login:使用者專用啟動檔案;
  • $HOME/.profile:使用者專用啟動檔案;

1.1 /etc/profile檔案  主要登陸了linux系統,bash就會執行/etc/profile/啟動檔案中的指令         每個發行版的/etc/peofile檔案都有不同的設定和指令

自學Linux Shell6.3-系統環境變量持久化

 以上程式含有for循環是用來疊代/etc/profile.d目錄下所有檔案

自學Linux Shell6.3-系統環境變量持久化

1.2 $HOME目錄下的啟動檔案 ,一般linux發行版隻用到下面4個裡面的1~2個檔案:

  • $HOME/.bash_profile:使用者專用啟動檔案;
  • $HOME/.bashrc:使用者專用啟動檔案;
  • $HOME/.bash_login:使用者專用啟動檔案;
  • $HOME/.profile:使用者專用啟動檔案;

他們都是隐藏檔案,位于使用者HOME目錄下,是以每個使用者都可以編輯這些檔案并添加自己的環境變量,這些環境變量會在每次啟動bash shell會話時候生效。

如個人的測試機上面隻有.profile     .bashrc

自學Linux Shell6.3-系統環境變量持久化

2  互動式shell

如果你在指令行提示符敲下bash指令,你啟動的shell稱作為互動式shell;

如果bash是作為互動式shell啟動的,它就不會去通路/etc/profile檔案,而會去使用者的HOME目錄檢查.bashrc是否存在;

.bashrc檔案有兩個作用;

  • 檢視/etc目錄下的公用bashrc檔案;
  • 而是為使用者提供了一個定制自己的指令别名和私有腳本函數的地方;

3  非互動式shell

 系統執行shell腳本時用的就是非互動式shell,不同的地方在于它沒有指令行提示符。

當shell啟動一個非互動式shell程序時,它會檢查這個環境變量來檢視要執行的啟動檔案,如果有指定的檔案,shell會執行該檔案裡的指令,這通常包括shell腳本變量設定。

總結 :

1. 按變量的生存周期來劃分,Linux變量可分為兩類:

  • 永久的:需要修改配置檔案,變量永久生效。
  • 臨時的:使用export指令聲明即可,變量在關閉shell時失效。