1. 程式人生 > >Linux程式設計 11(shell全域性環境變數與局變環境變數)

Linux程式設計 11(shell全域性環境變數與局變環境變數)

一.概述

  在linux中,很多程式和指令碼都通過環境變數來獲取系統資訊,儲存臨時資料,配置資訊。環境變數是指用來儲存有關shell會話和工作環境資訊,允許你在記憶體中儲存資料,以便程式或shell中執行的指令碼能夠輕鬆訪問到它們。也是儲存持久資料的一種簡便方法。在bash shell中,環境變數分為:全域性和區域性二類環境變數。

 1.1全域性環境變數

    全域性環境變數對於shell會話和所有生成的子shell都是可見的。區域性變數則只是建立它們的shell可見。在linux系統中有系統環境變數,它們基本都是使用全大寫字母,以區別普通使用者的環境變數。要檢視系統全域性變數,可以使用env命令, 如下圖所示:    

    要檢視個別的環境變數的值,可以使用printenv命令, 如下圖所示:        正如前面所說的,全域性變數在所有生成的子shell都是可見的,下面是用子shell輸出USER全域性變數,如下所示:

    

  1.2 區域性環境變數

    區域性環境變數雖然是區域性的,但和全域性環境變數一樣重要。在linux作業系統上有預設全域性環境變數也有區域性環境變數,使用者也可以自定義區域性變數。使用set 命令會顯示某個指定程序下的所有環境變數,包括全域性,局變,使用者自定義變數。

二.使用者自定義變數

  2.1 自定義區域性變數

    下是自定義一個區域性變數,使用echo來宣告一個變數名my_variable,並賦值一個字串(也可是數字)。然後再使用echo輸出該變數的值。如下圖所示:    

    要注意的點是:宣告變數名時必須加$關鍵詞, 賦值時不要加$關鍵詞,輸出時要加$關鍵詞,也可以說使用echo時都要加$。變數名,等號,值三者之間不能有空格。如果變數值有空格時,必須加雙引號。如下所示:        如果是在子shell中,那該變數就不存在,退回主執行緒還是存在,如下圖所示:    

  2.2 自定義全域性變數    

    設定了全域性變數,在該程序所建立的子程序中,該變數都是可見的。建立全域性變數的方法是先建立一個區域性變數,然後匯出到全域性環境中。通過export來匯出,變數名前面不加$。如下圖所示:    

    在子shell中修改全域性變數並不會影響到父shell中該變數的值。這種改變僅在子shell中有效。並不會反映到父shell中。如下圖所示:    

  2.3 刪除環境變數

    要刪除環境變數可以用unset命令,在unset引用變數名時,不要加$。