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

點擊返回 自學Linux命令行與Shell腳本之路html

6.3-系統環境變量持久化

在你登陸Linux系統啓動一個bash shell時,默認狀況下bash在幾個文件中查找命令,這幾個文件成爲啓動文件;
bash檢查的啓動文件取決於你啓動bash shell的方式,啓動bash shell有3中方式:linux

  • 登陸時當作默認登陸shell;
  • 做爲非登陸shell的交互shell,在命令行中輸入bash;
  • 做爲運行腳本的非交互shell,在shell腳本中執行shell;

1  登錄shell

當你登陸Linux系統時,登錄了shell會從5個不一樣的啓動文件裏讀取命令:shell

  • /etc/profile:默認bash shell的主啓動文件,每一個用戶登陸都會執行這個啓動文件;
  • $HOME/.bash_profile:用戶專用啓動文件;
  • $HOME/.bashrc:用戶專用啓動文件;
  • $HOME/.bash_login:用戶專用啓動文件;
  • $HOME/.profile:用戶專用啓動文件;

1.1 /etc/profile文件  主要登錄了linux系統,bash就會執行/etc/profile/啓動文件中的命令
         每一個發行版的/etc/peofile文件都有不一樣的設置和命令
bash

 以上程序含有for循環是用來迭代/etc/profile.d目錄下全部文件函數

1.2 $HOME目錄下的啓動文件 ,通常linux發行版只用到下面4個裏面的1~2個文件:測試

  • $HOME/.bash_profile:用戶專用啓動文件;
  • $HOME/.bashrc:用戶專用啓動文件;
  • $HOME/.bash_login:用戶專用啓動文件;
  • $HOME/.profile:用戶專用啓動文件;

他們都是隱藏文件,位於用戶HOME目錄下,因此每一個用戶均可以編輯這些文件並添加本身的環境變量,這些環境變量會在每次啓動bash shell會話時候生效。
如我的的測試機上面只有.profile     .bashrc
spa

2  交互式shell

若是你在命令行提示符敲下bash命令,你啓動的shell稱做爲交互式shell
若是bash是做爲交互式shell啓動的,它就不會去訪問/etc/profile文件,而會去用戶的HOME目錄檢查.bashrc是否存在;
.bashrc文件有兩個做用;命令行

  • 查看/etc目錄下的公用bashrc文件;
  • 而是爲用戶提供了一個定製本身的命令別名和私有腳本函數的地方;

3  非交互式shell

 系統執行shell腳本時用的就是非交互式shell,不一樣的地方在於它沒有命令行提示符。
當shell啓動一個非交互式shell進程時,它會檢查這個環境變量來查看要執行的啓動文件,若是有指定的文件,shell會執行該文件裏的命令,這一般包括shell腳本變量設置。htm

 

總結 :

1. 按變量的生存週期來劃分,Linux變量可分爲兩類: blog

  •  永久的:須要修改配置文件,變量永久生效。
  •  臨時的:使用export命令聲明便可,變量在關閉shell時失效。

2.永久環境變量,對全部用戶有效  
   修改/etc/profile文件也可,可是若是升級所用發行版也同樣會更新,定製過的變量會消失
   建議修改/etc/profile.d目錄 中建立一個以.sh爲結尾的文件,把定製過的全局環境變量放置其中

3.永久環境變量,對單一用戶有效
   修改用戶目錄下的.bash_profile文件

4. 臨時環境變量,只對當前shell(BASH)有效
    在shell的命令行下直接使用[export 變量名=變量值] 定義變量,
    該變量只在當前的shell(BASH)或其子shell(BASH)下是有效的,
    shell關閉了,變量也就失效了,再打開新shell時就沒有這個變量,須要使用的話還須要從新定義。

相關文章
相關標籤/搜索