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