Linux系統環境變數

2021-08-20 13:23:22 字數 2201 閱讀 2559

環境變數

1.1 環境變數概念

環境變數是乙個在作業系統中具有特定名字的物件,它包含了乙個或者多個應用程式所將要使用的資訊。

在shell中經常會用環境變數來儲存有關shell會話和工作環境的資訊。通過環境變數,可以在記憶體中儲存資料,以便程式或者shell執行指令碼能夠輕鬆訪問它們。

環境變數分為兩類:全域性變數、區域性變數。

全域性變數對於shell會話和所有生成的子shell都是可見的(在子shell中修改或建立全域性環境變數不會影響到父shell,修改或建立父shell的全域性變數子shell的值也會改變),區域性變數則只對建立它們的shell可見。

1.2 環境變數的載入

當登入linux系統啟動乙個bash shell時,預設情況下bash會在幾個檔案中查詢命令。這些檔案叫做啟動檔案或環境檔案。bash檢查的啟動檔案取決bash shell的啟動方式。bash shell的啟動方式有三種:登入時作為預設登入的shell、作為非登入shell的互動式shell、作為執行指令碼的非互動式shell。

1.2.1 登入時預設shell

當bash shell作為登入shell啟動,會從如下5個不同的啟動檔案裡讀取命令:

/etc/profile檔案是系統上預設的bash shell主啟動檔案,每個使用者登入都會執行這個啟動檔案。另外4個啟動檔案是針對使用者的,可以根據個人需求進行定製。shell會按照

$home/.bash_profile、

$home/.bash_login、

$home/.profile的順序查詢要執行的環境檔案,執行第乙個被找到檔案,餘下的則會被忽略。

$home/.bashrc這個環境檔案通常是通過其他環境檔案呼叫執行的。

1.2.2 互動式shell

如果bash shell不是登入系統時啟動的(如是在命令提示符下通過bash命令啟動的shell),那麼啟動的shell叫做互動式shell。互動式shell不像登入shell一樣執行,但是依然提供了命令提示符來輸入命令。

互動式shell不會訪問/etc/profile環境檔案,只會檢查使用者home目錄中的.bashrc檔案(但是通常會繼承父shell的全域性變數)。

1.2.3 非互動式shell

非互動shell沒有命令提示符,通常使用者在執行shell指令碼或者系統使用者設定的定時器執行的定時指令碼都是這類shell。

當啟動非互動式shell時會檢查系統啟動這個非互動式shell的使用者的全域性環境變數中的bash_env的值,來檢視要執行的環境檔案,如果有指定檔案,shell會執行該檔案的命令,這通常包括shell指令碼變數設定。但是大部分預設情況下bash_env這個環境變數是沒有值的。

那就有個問題了,shell指令碼去**獲取環境變數呢。別忘了上面說的,指令碼通常是被某個使用者啟動的,所有呢通常執行指令碼shell就是使用者的登入shell或登入shell的子shell。

看個例子,在test.sh指令碼中列印出環境變數home,通過home值就可以知道這個指令碼執行在哪個登入使用者下的了(根據其是在登入shell中還是登入shell的子shell中就可以知道指令碼可以使用的環境變數)。同時用ps --forest檢視shell的執行樹:

如上執行結果可以看出,指令碼是執行在root使用者環境下的,並且啟動了個子shell來執行指令碼。

1.3 設定永久的全域性或者區域性環境變數

通常可以通過將環境變數新增入/etc/profile檔案中來設定全域性的永久環境變數,但是呢其實這不是最好的設定全域性永久環境變數的方式。可以通過在/etc/profile.d目錄(執行profile時會去輪詢這個目錄下的檔案並執行)中建立乙個以.sh結尾的檔案把新的或者修改環境變數放置在這個檔案中,可以避免系統公升級導致/etc/profile檔案被替換設定的全域性永久環境變數消失。

對於大多數的linux發行版本中,儲存個人永久性環境變數比較好的設定地方是$home/.bashrc檔案中,多數的linux系統版本中個人環境檔案都會呼叫$home/.bashrc這個環境檔案,如下/root/.bash_profile環境檔案內容:

Linux 系統環境變數

1.顯示環境變數home echo home 2.設定乙個新的環境變數welcome export welcome hello 3.使用env命令顯示所有的環境變數 env 4.使用set命令顯示所有本地定義的shell變數 set 5.使用unset命令來清除環境變數 unset test 刪除環...

Linux系統中環境變數

先來介紹以下linu中的環境變數 linux 的變數可分為兩類 環境變數和本地變數 環境變數,或者稱為全域性變數,存在與所有的shell 中,在你登陸系統的時候就已經有了相應的系統定義的環境變數了。linux 的環境變數具有繼承性,即子shell 會繼承父shell 的環境變數。本地變數,當前she...

linux 系統新增環境變數

在linux下使用原始碼安裝軟體的時候,通常只能在軟體安裝目錄下使用該軟體命令 使用yum命令安裝的除外 這樣太麻煩,我們希望全域性使用,可以將軟體安裝路徑新增到系統環境變數裡。新增環境變數有2種方法 1,使用export命令 export path path opt software node v...