Linux中的環境變數知多少?

大雄45發表於2021-06-28
導讀 環境變數在進行 開發過程中經常碰到,那什麼是環境變數呢?很多朋友在剛學習Linux的時候對環境變數不是特別理解,變數不應該是在程式語言中類似於全域性變數和區域性變數嗎?怎麼又來了個環境變數?
01 環境變數

環境變數在進行linux開發過程中經常碰到,那什麼是環境變數呢?很多朋友在剛學習Linux的時候對環境變數不是特別理解,變數不應該是在程式語言中類似於全域性變數和區域性變數嗎?怎麼又來了個環境變數?

在我們主流的OS中幾乎都存在環境變數的概念,同樣在windows下也是存在環境變數的,如下圖所示:

Linux中的環境變數知多少?Linux中的環境變數知多少?

其實這些所謂的環境變數就相當於一些資訊的簡稱,比如搜尋、查詢的路徑等等,以後應用程式可以獲取這些環境變數中包含的資訊來完成相應的工作,很多小夥伴有這樣的體會,經常在windows中執行剛安裝的軟體會需要在環境變數中新增一些路徑等資訊,否則軟體無法執行。

在Linux中也是類似的作用,當執行一個 ,系統會根據環境變數中的路徑資訊依次搜尋直到找到對應的程式執行。

02 Linux環境變數

Linux環境變數主要分為系統級別和使用者級級別,這點與windows也是非常類似的,如下圖所示:

Linux中的環境變數知多少?Linux中的環境變數知多少?

不同級別的環境變數在 存在於不同的配置檔案,且他們的作用域也是不一樣的,所以這裡結合C語言的各種變數的作用域就可以更加方便理解所謂的環境變數了吧,同樣它也是一段常駐的記憶體標識。

我們在linux中斷中輸入printenv 即可檢視所有的環境變數:

Linux中的環境變數知多少?Linux中的環境變數知多少?

其中比較常用的是環境變數PATH,可以使用printenv PATH或者echo $PATH來單獨檢視,如下圖所示,兩者完全一致:

Linux中的環境變數知多少?Linux中的環境變數知多少?

PATH環境變數以冒號 : 進行分割,形成了多個路徑,當使用者輸入相應的命令便會依次從上面的路徑中查詢程式來執行。

比如:在終端中輸入ls命令列, 會從PATH變數中儲存的路徑來查詢ls執行程式來執行。

03 修改環境變數

還是把上面的圖拿過來:

Linux中的環境變數知多少?Linux中的環境變數知多少?

修改環境變數大體分為兩種辦法 :

1 ) 使用export命令列直接匯入;

2 ) 將export命令列儲存到如上圖所示的對應的檔案中適時進行載入匯入。

對於命令匯入的辦法是臨時的,而儲存到對應的檔案中可以覆蓋其作用域生效。

方法1示例:

1、使用命令列"export 環境變數=新加入值:$環境變數",如下圖所示,這樣就加入了新的路徑。

Linux中的環境變數知多少?Linux中的環境變數知多少?

2、當退出該終端重新進入,那麼之前使用export臨時加入的環境變數就會消失。

3、這種直接使用命令列的方式,可以立即生效,並且僅對當前使用者起作用,當重新開啟終端會失效。

方法2示例:

1、相對命令列方式,其實僅僅只是把export命令列放到了相應的檔案中進行載入使用,我們進入到家目錄,然後編輯隱藏檔案.bashrc,然後把命令列追加到最後,如下圖所示:

Linux中的環境變數知多少?Linux中的環境變數知多少?

2、加入到檔案並儲存以後,其環境變數不會立即生效,需要使用source命令執行一下,才能夠生效。

3、重新啟動終端,如下圖所示,其環境變數依然存在,因為~/.bashrc包含shell的bash資訊,當登入以及每次開啟新的shell時,該檔案被讀取,相應的命令也就會重新執行。

Linux中的環境變數知多少?Linux中的環境變數知多少?

4、上面修改.bashrc僅僅只是在shell啟動時被載入,在其被載入前執行的程式均無效,所以就有不同作用域,比如環境變數儲存在~/.profile中,那麼圖形介面啟動程式就可以訪問到設定的環境變數,而設定到~/.bashrc中的便無法被圖形介面啟動程式訪問。

5、對於普通使用者其實將環境變數在.bashrc檔案中操作即可,如果修改了其他作用域更廣的配置,會影響到其他使用者,同時這些配置檔案也是逐級覆蓋的,啟動過程中後面載入的檔案會覆蓋前面相同的配置資訊。

最 後

好了,這裡小哥就介紹了一下Linux中環境變數的理解與使用,以後在安裝編譯器,或者make命令等等很多地方都會設計到環境變數的操作,希望本文能夠對你有幫助!

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2778613/,如需轉載,請註明出處,否則將追究法律責任。

相關文章