Linux命令行與Shell-----環(huán)境變量

  1. 全局環(huán)境變量
    全局環(huán)境變量對(duì)于shell會(huì)話和所有生成的子shell都是可見的。 局部變量則只對(duì)創(chuàng)建它們的shell可見。
    要查看全局變量, 可以使用 envprintenv 命令。

    • 要顯示個(gè)別環(huán)境變量的值, 可以使用printenv 命令, 但是不要用env 命令。

    • 也可以使用echo 顯示變量的值。 在這種情況下引用某個(gè)環(huán)境變量的時(shí)候, 必須在變量前面加上一個(gè)美元符( $ )

      echo $HOME
      ls $HOME
      
  2. 局部環(huán)境變量
    局部環(huán)境變量只能在定義它們的進(jìn)程中可見。

    • 在Linux系統(tǒng)并沒有一個(gè)只顯示局部環(huán)境變量的命令。
    • set 命令會(huì)顯示為某個(gè)特定進(jìn)程設(shè)置的所有環(huán)境變量, 包括局部變量、 全局變量以及用戶定義變量。
  3. 設(shè)置用戶定義變量

    1. 設(shè)置局部用戶定義變量

       my_variable=Hello
       echo $my_variable
      
       #設(shè)置了局部環(huán)境變量后, 就能在shell進(jìn)程的任何地方使用它了。 但是, 如果生成了另外一個(gè)shell, 它在子shell中就不可用。
       bash
       echo $my_variable    #空
       exit
       echo $my_variable    #Hello
      
    2. 設(shè)置全局環(huán)境變量
      在設(shè)定全局環(huán)境變量的進(jìn)程所創(chuàng)建的子進(jìn)程中, 該變量都是可見的。 創(chuàng)建全局環(huán)境變量的方法是先創(chuàng)建一個(gè)局部環(huán)境變量, 然后再把它導(dǎo)出到全局環(huán)境中。
      這個(gè)過(guò)程通過(guò)export 命令來(lái)完成, 變量名前面不需要加$ 。

       my_variable="I am Global now"
      export my_variable
      echo $my_variable    # I am Global now
      bash
      echo $my_variable    # I am Global now
      # 修改子shell中全局環(huán)境變量并不會(huì)影響到父shell中該變量的值。
      bash
      my_variable="Null"
      echo $my_variable    # Null
      exit
      echo $my_variable    # I am Global now
      # 刪除環(huán)境變量
      unset my_variable
      # 在處理全局環(huán)境變量時(shí), 事情就有點(diǎn)棘手了。 如果你是在子進(jìn)程中刪除了一個(gè)全局環(huán)境變量, 這只對(duì)子進(jìn)程有效。 該全局環(huán)境變量在父進(jìn)程中依然可用。
      my_variable="I am Global now"
      bash
      unset my_variable
      exit
      echo $my_variable    # I am Global now
      
  4. 設(shè)置PATH 環(huán)境變量

     PATH=$PATH:/usr/local/nginx/sbin
    
  5. 定位系統(tǒng)環(huán)境變量

    • 在你登入Linux系統(tǒng)啟動(dòng)一個(gè)bash shell時(shí), 默認(rèn)情況下bash會(huì)在幾個(gè)文件中查找命令。 這些文件叫作啟動(dòng)文件 或環(huán)境文件 。
    • 啟動(dòng)bash shell有3種方式:
      1. 登錄時(shí)作為默認(rèn)登錄shell
      2. 作為非登錄shell的交互式shell
      3. 作為運(yùn)行腳本的非交互shell
    • 當(dāng)你登錄Linux系統(tǒng)時(shí), bash shell會(huì)作為登錄shell啟動(dòng)。 登錄shell會(huì)從5個(gè)不同的啟動(dòng)文件里讀取命令:
      1. /etc/profile
        /etc/profile文件是bash shell默認(rèn)的的主啟動(dòng)文件。 只要你登錄了Linux系統(tǒng), bash就會(huì)執(zhí)行 /etc/profile 啟動(dòng)文件中的命令。

        這兩個(gè)發(fā)行版(Ubuntu和CentOS)的/etc/profile文件都用到了同一個(gè)特性: for 語(yǔ)句。 它用來(lái)迭代/etc/profile.d目錄下的所有文件。 這為L(zhǎng)inux系統(tǒng)提供了一個(gè)放置特定應(yīng)用程序啟動(dòng)文件的地方, 當(dāng)用戶登錄時(shí), shell會(huì)執(zhí)行這些文件。

      2. $HOME目錄下的啟動(dòng)文件
        剩下的啟動(dòng)文件都起著同一個(gè)作用: 提供一個(gè)用戶專屬的啟動(dòng)文件來(lái)定義該用戶所用到的環(huán)境變量。 大多數(shù)Linux發(fā)行版只用這四個(gè)啟動(dòng)文件中的一到兩個(gè):

        • $HOME/.bash_profile
        • $HOME/.bashrc
        • $HOME/.bash_login
        • $HOME/.profile
  6. 環(huán)境變量持久化

    • 現(xiàn)在你已經(jīng)了解了各種shell進(jìn)程以及對(duì)應(yīng)的環(huán)境文件, 找出永久性環(huán)境變量就容易多了。 也可以利用這些文件創(chuàng)建自己的永久性全局變量或局部變量。
    • 最好是在/etc/profile.d目錄中創(chuàng)建一個(gè)以.sh結(jié)尾的文件。 把所有新的或修改過(guò)的全局環(huán)境變量設(shè)置放在這個(gè)文件中。
    • 用source命令使其生效(否則需注銷重新登錄才能生效)
  7. 數(shù)組變量
    要給某個(gè)環(huán)境變量設(shè)置多個(gè)值, 可以把值放在括號(hào)里, 值與值之間用空格分隔。

     mytest=(one two three four five)
     echo $mytest    # one
     echo ${mytest[2]}    #three
     echo ${mytest[*]}    #one two three four five
     mytest[2]=seven    #one two seven four five
     unset mytest[2]      #one two four five
     echo ${mytest[2]}    #空
     echo ${mytest[3]}    #four
     unset mytest
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容