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