使用Linux的環境變量

  許多程序和腳本都使用環境變量來獲取系統信息,並存儲臨時數據和配置信息;程序員

一、什麼是環境變量

  用來存儲關於shell會話和工做環境的信息,就叫作環境變量;shell

  bash shell下兩種類型:數組

    一、全局變量;bash

    二、局部變量;命令行

  1.一、全局環境變量

    全局環境變量再shell會話,和在該shell中產生的子進程中均可見。blog

    Linux系統,默認狀況下會支持一些全局環境變量,經過printenv來查看全局環境變量;索引

    使用echo命令來查看某個環境變量:three

    例如:echo $HOME  #變量前面必須加上$符號;在子進程中,這個變量依然生效;進程

  1.二、局部環境變量

    本地環境變量,只在定義他們的本地進程中生效可見;沒有命令能夠只顯示本地環境變量;字符串

    set命令顯示特定進程的全部環境變量集。set中看到的除了printenv中的變量外的全部變量,都是本地環境變量

二、設置環境變量

  能夠在bash shell中直接設置本身的環境變量。

  2.一、設置本地環境變量

    test=testing

    echo $test

    若是是字符串,就須要使用引號

    test='testing a long string'

    echo $test

    【注意:咱們使用小寫字母來定義本地環境變量】

    *環境變量名稱、等號和值之間沒有空格,這一點尤其重要*

    同時:若是在子進程中設置了本地環境變量,則一旦離開子進程,本地環境變量將再也不可用;  

  2.二、設置全局變量

    咱們須要建立一個本地環境變量,而後將其導出到全局環境中。這個過程經過export命令來完成;

    test='testing a long string'

    echo $test

    export test

    bash

    echo $test  #此時,test變量再子進程bash中也會生效了;

三、移除環境變量

  unset能夠爲咱們完成刪除環境比那輛的操做;

  test=testing

  export test

  unset test

四、默認的shell環境變量

  默認的Bourne的環境變量:

  一、CDPATH    cd命令的搜索路徑

  二、HOME      當前用戶的主目錄

  三、IFS        用於分隔字段的字符列表,shell使用它們分隔本文字符串

  四、MAIL      當前用戶郵箱文件名,對於新郵件,bash shell將檢查該文件

  五、MAILPATH    當前用戶郵箱的多個文件名,由冒號分隔。對於新郵件,bash shell將檢查該列表中的各個文件

  六、OPTARG    getopts命令處理的最後一個選項參數的值

  七、OPTIND      getopts命令處理的最後一個選項參數的索引值

  八、PATH      冒號分隔的目錄列表,shell將在這些目錄中查找命令

   

  九、PS1      主shell命令行界面提示字符串

  十、PS2      次shell命令行界面提示字符串

  

  bash shell本身的環境變量:

五、設置PATH環境變量

  echo $PATH

  PATH=$PATH:/home/rich/test

  程序員經常使用技巧

  PATH=$PATH:.  #後面直接加點(.),將當前目錄添加到PATH中去;

六、定位系統環境變量

  經過Linux啓動bash shell的時候,系統會讀取一些文件,這些文件被稱爲啓動文件。文件裏面包含了啓動bash shell的一些方法,能夠採用三種方式來啓動bash shell:

  一、在登陸時做爲默認登陸shell

  二、做爲非登陸shell的交互式shell

  三、做爲非交互式shell運行腳本

  6.一、登陸shell

    登陸bash shell後,系統會查找四個常見文件:/etc/profile、$HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile;

    一、/etc/profile文件

    /etc/profile文件是bash shell在系統上的主默認啓動文件。系統上的每個用戶在登陸shell的時候都會執行這個啓動文件。另外3個屬於特定用戶,能夠根據用戶需求來本身定義;

    咱們能夠在/etc/profile底部添加export行;

    例如:export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

    若是使用的比那輛比較大,或者是一個執行文件,可使用/etc/profile.d目錄;它是Linux系統提供了一個放置特定應用程序的啓動文件的地方。

    二、$HOME啓動文件

    另外的三個啓動文件用於特定用戶的環境變量,用戶能夠編輯這些文件來添加本身啓動的bash shell會話都爲活動狀態的環境變量;

  6.二、交互式shell

    bash 回車,這樣的話啓動了一個bash shell而沒有登陸系統,就是交互式的shell。交互式的shell與登陸shell的行爲不一樣,但它仍然提供了CLI的提示符界面;

    交互式的shell不會處理/etc/profile文件,相反他會檢查$HOME/。bashrc文件;

    .bashrc文件執行兩個任務:一、檢查/etc目錄中的公共bashrc;二、方便用戶輸入我的別名;  

  6.三、非交互式shell

    這是系統開始執行shell腳本的shell,它不用擔憂CLI提示符。可是,您仍然但願在每次啓動系統中的腳本時運行特定的腳本啓動命令。

    爲了適應這種狀況,bash shell提供連帶BASH_ENV環境變量。當shell開始一個非交互是shell程序時,它將檢查該環境變量表示的待執行啓動文件的名稱。若是該變量有值,則shell將執行該文件中的命令。在咱們的Linux髮型版本中,此環境變量並不是默認設置;

七、變量數組

  環境變量能夠做爲數組使用;數組能夠保存多個值,這些值能夠一塊兒引用,也能夠單獨引用;

  mytest=(one two three four five)

  echo $mytest

  echo ${mytest[2]}

  echo ${mytest[*]}

  mytest[2]=seven  #給數組彙總的某個值賦值

  unset mytest  #移除整個數組變量

八、使用別名

  alias -p  #查看當前支持的別名

  alias li='ls -il'  #這樣就能夠本身定義命令的顯示格式;

  除了直接使用alias命令意外,還能夠隨時在shell中使用它。

  命令別名與本地環境變量的行爲類似。它們只對與定義範圍內的shell進程生效;

  bash

  li  #這樣的話,新定義的alias li就無效了;

  固然,您也能夠在$HOME/.bashrc啓動文件中去定義,這樣的話,新的交換式的shell界面就會讀取這個alias的配置;

相關文章
相關標籤/搜索