 環境變(bian)量配置方法,外加典型(xing)實例
							時間(jian):2018-07-13      來源(yuan):未知
							環境變(bian)量配置方法,外加典型(xing)實例
							時間(jian):2018-07-13      來源(yuan):未知 
							在嵌入式開發中,小伙伴經(jing)常(chang)為(wei)配(pei)置開發環境(jing)(jing)頭疼,比如我們(men)最常(chang)見(jian)的交叉編譯(yi)環境(jing)(jing)arm-linux-gcc工具鏈的搭建。我們(men)經(jing)常(chang)會碰到(dao)命令無(wu)法找(zhao)到(dao),無(wu)法識(shi)別(bie)的錯誤提示。究其原(yuan)因,其實大(da)多數都是因為(wei)我們(men)環境(jing)(jing)變量沒有配(pei)置好而已。為(wei)了讓(rang)大(da)家更輕松更明(ming)了我們(men)軟件(jian)運行(xing)的環境(jing)(jing),在此向大(da)家講(jiang)一講(jiang)linux中環境(jing)(jing)變量的一些(xie)小知識(shi),幫助大(da)家學(xue)習。
環(huan)境變(bian)量(liang)是(shi)什么呢(ni)?環(huan)境變(bian)量(liang)一般是(shi)指在(zai)(zai)操作系(xi)統中(zhong)用(yong)來指定操作系(xi)統運(yun)行(xing)環(huan)境的(de)(de)一些參數,如:臨(lin)時文(wen)件夾位置和系(xi)統文(wen)件夾位置等(deng)。典型的(de)(de)像linux中(zhong)的(de)(de)path環(huan)境變(bian)量(liang),當要求系(xi)統運(yun)行(xing)一個(ge)程序而沒有告訴它程序所在(zai)(zai)的(de)(de)完(wan)整路(lu)徑(jing)時,系(xi)統除了(le)在(zai)(zai)當前目錄下面尋找此(ci)程序外,還(huan)應(ying)到path中(zhong)指定的(de)(de)路(lu)徑(jing)去找。用(yong)戶(hu)通過設(she)置環(huan)境變(bian)量(liang),可實現(xian)在(zai)(zai)任何路(lu)徑(jing)下更好的(de)(de)運(yun)行(xing)進程。像我們(men)在(zai)(zai)linux中(zhong)運(yun)行(xing)的(de)(de)命(ming)令,還(huan)有交叉編譯工具(ju)arm-linux-gcc等(deng)。我們(men)以交叉編譯工具(ju)arm-linux-gcc跟(gen)大家(jia)舉(ju)例講(jiang)解,環(huan)境變(bian)量(liang)的(de)(de)配置方(fang)法。
交(jiao)叉編譯(yi)工具arm-linux-gcc配置方法大(da)家熟知的有兩種
第一種:編(bian)輯(ji)/etc/environment文件(jian),加(jia)入相應的路(lu)徑。
$ sudo vim /etc/environment 我(wo)們(men)在environment文(wen)件內容的(de)(de)末(mo)尾添上工具的(de)(de)所在的(de)(de)路(lu)徑。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/farsight/gcc-4.6.4/bin"
注銷后(hou)重新登錄(lu)后(hou)生效。
第(di)二(er)種:使用(yong)命令:vim /home/ farsight /.bashrc 編輯(ji).bashrc文件,添(tian)加環境(jing)變量。
在該文件(jian)中最后一行添加(jia):
export PATH=$PATH: /home/farsight/gcc-4.6.4/bin
使(shi)用命令:source /home/ farsight /.bashrc 使(shi)環境變(bian)量生效
以上兩(liang)種方法本質上都(dou)是(shi)去修(xiu)改PATH這個(ge)環境變(bian)量,在PATH這個(ge)變(bian)量中添(tian)加(jia)交叉(cha)編譯工(gong)具的路徑(jing),這樣我(wo)們(men)在任意路徑(jing)下(xia)去執(zhi)行arm-linux-gcc時,系統都(dou)能通過PATH找到工(gong)具的路徑(jing),從而順暢執(zhi)行工(gong)具。可是(shi)小(xiao)伙伴多半會疑惑,這兩(liang)種配(pei)置方式究竟有什么區(qu)別?為什么第一(yi)種需要(yao)注銷后重新登(deng)陸生效(xiao),而第二種不需要(yao)呢(ni)?我(wo)們(men)接下(xia)來帶大家深入(ru)了解下(xia)環境變(bian)量相(xiang)關(guan)的知識。
linux中環境(jing)變量(liang)包括系(xi)(xi)(xi)統(tong)級(ji)(ji)和用戶級(ji)(ji),系(xi)(xi)(xi)統(tong)級(ji)(ji)的(de)環境(jing)變量(liang)是(shi)(shi)每(mei)個登(deng)錄到系(xi)(xi)(xi)統(tong)的(de)用戶都(dou)要讀取的(de)系(xi)(xi)(xi)統(tong)變量(liang),而用戶級(ji)(ji)的(de)環境(jing)變量(liang)則(ze)是(shi)(shi)該(gai)用戶使用系(xi)(xi)(xi)統(tong)時(shi)加(jia)(jia)載的(de)環境(jing)變量(liang)。所謂(wei)的(de)環境(jing)變量(liang)配置文件,就是(shi)(shi)在(zai)shell登(deng)陸的(de)時(shi)候自動加(jia)(jia)載的(de)那些文件。而登(deng)陸分為兩種登(deng)陸卻分為兩種:
login shell登陸和interactive shell登陸。
所謂的login shell登(deng)(deng)(deng)(deng)陸,實(shi)際上就是指需(xu)要(yao)輸(shu)入(ru)密碼的登(deng)(deng)(deng)(deng)陸。具體的說,包括開(kai)機登(deng)(deng)(deng)(deng)陸、ssh登(deng)(deng)(deng)(deng)陸,或者(zhe)是輸(shu)入(ru)bash --login這種“假(jia)裝自己輸(shu)入(ru)密碼登(deng)(deng)(deng)(deng)陸”的方式。 在這種登(deng)(deng)(deng)(deng)陸方式下,系(xi)(xi)統(tong)(tong)會(hui)(hui)先讀(du)(du)取(qu)/etc/profile文件,然(ran)后,系(xi)(xi)統(tong)(tong)會(hui)(hui)依次搜索~/.bash_profile、~/.bash_login、~/.profile 這三個文件,并運(yun)行(xing)只其中(zhong)第一個存在的文件。Linux系(xi)(xi)統(tong)(tong)中(zhong)/etc/environment是設置整(zheng)個系(xi)(xi)統(tong)(tong)的環(huan)(huan)境,而/etc/profile是設置所有用(yong)戶的環(huan)(huan)境,前(qian)者(zhe)與登(deng)(deng)(deng)(deng)錄用(yong)戶無關(guan),后者(zhe)與登(deng)(deng)(deng)(deng)錄用(yong)戶有關(guan)。login shell登(deng)(deng)(deng)(deng)陸時系(xi)(xi)統(tong)(tong)會(hui)(hui)先執(zhi)行(xing)profile文件再讀(du)(du)取(qu)environment獲取(qu)用(yong)戶及系(xi)(xi)統(tong)(tong)的環(huan)(huan)境變量信息以為運(yun)行(xing)準備好環(huan)(huan)境。因此這些文件都(dou)是在登(deng)(deng)(deng)(deng)陸的時候(hou)就讀(du)(du)取(qu)生(sheng)效了,如果改變以后需(xu)要(yao)重新(xin)登(deng)(deng)(deng)(deng)陸重新(xin)讀(du)(du)取(qu)生(sheng)效。
所謂的(de)interactive shell登(deng)陸(lu)(lu),其實就是相對于(yu)login shell登(deng)陸(lu)(lu)而言的(de)。我們(men)平時在登(deng)陸(lu)(lu)后右鍵打開終(zhong)端(duan)、或者CTRL+ALT+T打開終(zhong)端(duan)都是interactive shell登(deng)陸(lu)(lu)。 在這種(zhong)登(deng)陸(lu)(lu)方式下,系統會依次(ci)讀取/etc/bash.bashrc和~/.bashrc,并加以執行。 通(tong)常情況下,~/.bashrc文(wen)件(jian)里會默認記錄一些(xie)常量(liang)和一些(xie)別(bie)名(ming),比如(ru)&PATH變量(liang),該變量(liang)記錄著(zhu)一些(xie)命令(ling)可執行文(wen)件(jian)的(de)路徑等,當(dang)我們(men)修改(gai)了文(wen)件(jian),只需(xu)要source一下文(wen)件(jian)即可生效(xiao)。
以上分析給(gei)我們的(de)(de)啟示是(shi)(shi),當(dang)我們為服務器配置(zhi)變量(liang)時,盡量(liang)配置(zhi)到(dao)/etc/profile里或者~/.bash_profile里,因(yin)為用(yong)(yong)ssh登錄服務器是(shi)(shi)基本(ben)上用(yong)(yong)不到(dao).bashrc文(wen)(wen)件的(de)(de);當(dang)我們給(gei)自己的(de)(de)電腦(nao)配置(zhi)環境(jing)變量(liang)時,盡量(liang)配置(zhi)到(dao).bashrc里,因(yin)為這(zhe)樣我們只(zhi)(zhi)要(yao)打(da)開終端就會讀入(ru)這(zhe)個文(wen)(wen)件,這(zhe)樣就可以不用(yong)(yong)注銷就能應(ying)用(yong)(yong)配置(zhi)了(le)(只(zhi)(zhi)有注銷重新登錄才會應(ying)用(yong)(yong)/etc/profile一類的(de)(de)配置(zhi)文(wen)(wen)件)。
好了(le)(le)(le),讀(du)到這(zhe)小伙伴(ban)應該對環境(jing)變量的相關(guan)知識有(you)一定了(le)(le)(le)解了(le)(le)(le)吧,應該知道環境(jing)變量有(you)什么作用(yong),怎么配置了(le)(le)(le)吧。希望大家以后配置工(gong)具的環境(jing)變量不再(zai)迷惑了(le)(le)(le)。

