聊聊Linux中的環境變量
01環境變量
環境變量在進行linux開發過程中經常碰到,那什么是環境變量呢?很多朋友在剛學習Linux的時候對環境變量不是特別理解,變量不應該是在編程語言中類似于全局變量和局部變量嗎?怎么又來了個環境變量?
在我們主流的OS中幾乎都存在環境變量的概念,同樣在windows下也是存在環境變量的,如下圖所示:
其實這些所謂的環境變量就相當于一些信息的簡稱,比如搜索、查詢的路徑等等,以后應用程序可以獲取這些環境變量中包含的信息來完成相應的工作,很多小伙伴有這樣的體會,經常在windows中運行剛安裝的軟件會需要在環境變量中添加一些路徑等信息,否則軟件無法運行。
在Linux中也是類似的作用,當執行一個命令,系統會根據環境變量中的路徑信息依次搜索直到找到對應的程序運行。
02Linux環境變量
Linux環境變量主要分為系統級別和用戶級級別,這點與windows也是非常類似的,如下圖所示:
不同級別的環境變量在linux系統存在于不同的配置文件,且他們的作用域也是不一樣的,所以這里結合C語言的各種變量的作用域就可以更加方便理解所謂的環境變量了吧,同樣它也是一段常駐的內存標識。
我們在linux中斷中輸入printenv命令即可查看所有的環境變量:
其中比較常用的是環境變量PATH,可以使用printenv PATH或者echo $PATH來單獨查看,如下圖所示,兩者完全一致:
PATH環境變量以冒號 : 進行分割,形成了多個路徑,當用戶輸入相應的命令便會依次從上面的路徑中查詢程序來執行。
比如:在終端中輸入ls命令行,Shell會從PATH變量中存儲的路徑來查找ls執行程序來運行。
03修改環境變量
還是把上面的圖拿過來:
修改環境變量大體分為兩種辦法 :
1 ) 使用export命令行直接導入;
2 ) 將export命令行保存到如上圖所示的對應的文件中適時進行加載導入。
對于命令導入的辦法是臨時的,而保存到對應的文件中可以覆蓋其作用域生效。
方法1示例:
1、使用命令行"export 環境變量=新加入值:$環境變量",如下圖所示,這樣就加入了新的路徑。
2、當退出該終端重新進入,那么之前使用export臨時加入的環境變量就會消失。
3、這種直接使用命令行的方式,可以立即生效,并且僅對當前用戶起作用,當重新打開終端會失效。
方法2示例:
1、相對命令行方式,其實僅僅只是把export命令行放到了相應的文件中進行加載使用,我們進入到家目錄,然后編輯隱藏文件.bashrc,然后把命令行追加到最后,如下圖所示:
2、加入到文件并保存以后,其環境變量不會立即生效,需要使用source命令執行一下,才能夠生效。
3、重新啟動終端,如下圖所示,其環境變量依然存在,因為~/.bashrc包含shell的bash信息,當登錄以及每次打開新的shell時,該文件被讀取,相應的命令也就會重新執行。
4、上面修改.bashrc僅僅只是在shell啟動時被加載,在其被加載前執行的程序均無效,所以就有不同作用域,比如環境變量保存在~/.profile中,那么圖形界面啟動程序就可以訪問到設置的環境變量,而設置到~/.bashrc中的便無法被圖形界面啟動程序訪問。
5、對于普通用戶其實將環境變量在.bashrc文件中操作即可,如果修改了其他作用域更廣的配置,會影響到其他用戶,同時這些配置文件也是逐級覆蓋的,啟動過程中后面加載的文件會覆蓋前面相同的配置信息。
最 后
好了,這里小哥就介紹了一下Linux中環境變量的理解與使用,以后在安裝編譯器,或者make命令等等很多地方都會設計到環境變量的操作,希望本文能夠對你有幫助!
本文轉載自微信公眾號「嵌入式情報局」,可以通過以下二維碼關注。轉載本文請聯系嵌入式情報局公眾號。






























