當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 環(huán)境變量配置方法,外加典型實(shí)例
在嵌入式開發(fā)中,小伙伴經(jīng)常為配置開發(fā)環(huán)境頭疼,比如我們最常見的交叉編譯環(huán)境arm-linux-gcc工具鏈的搭建。我們經(jīng)常會碰到命令無法找到,無法識別的錯誤提示。究其原因,其實(shí)大多數(shù)都是因?yàn)槲覀儹h(huán)境變量沒有配置好而已。為了讓大家更輕松更明了我們軟件運(yùn)行的環(huán)境,在此向大家講一講linux中環(huán)境變量的一些小知識,幫助大家學(xué)習(xí)。
環(huán)境變量是什么呢?環(huán)境變量一般是指在操作系統(tǒng)中用來指定操作系統(tǒng)運(yùn)行環(huán)境的一些參數(shù),如:臨時(shí)文件夾位置和系統(tǒng)文件夾位置等。典型的像linux中的path環(huán)境變量,當(dāng)要求系統(tǒng)運(yùn)行一個程序而沒有告訴它程序所在的完整路徑時(shí),系統(tǒng)除了在當(dāng)前目錄下面尋找此程序外,還應(yīng)到path中指定的路徑去找。用戶通過設(shè)置環(huán)境變量,可實(shí)現(xiàn)在任何路徑下更好的運(yùn)行進(jìn)程。像我們在linux中運(yùn)行的命令,還有交叉編譯工具arm-linux-gcc等。我們以交叉編譯工具arm-linux-gcc跟大家舉例講解,環(huán)境變量的配置方法。
交叉編譯工具arm-linux-gcc配置方法大家熟知的有兩種
第一種:編輯/etc/environment文件,加入相應(yīng)的路徑。
$ sudo vim /etc/environment 我們在environment文件內(nèi)容的末尾添上工具的所在的路徑。
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/farsight/gcc-4.6.4/bin"
注銷后重新登錄后生效。
第二種:使用命令:vim /home/ farsight /.bashrc 編輯.bashrc文件,添加環(huán)境變量。
在該文件中最后一行添加:
export PATH=$PATH: /home/farsight/gcc-4.6.4/bin
使用命令:source /home/ farsight /.bashrc 使環(huán)境變量生效
以上兩種方法本質(zhì)上都是去修改PATH這個環(huán)境變量,在PATH這個變量中添加交叉編譯工具的路徑,這樣我們在任意路徑下去執(zhí)行arm-linux-gcc時(shí),系統(tǒng)都能通過PATH找到工具的路徑,從而順暢執(zhí)行工具。可是小伙伴多半會疑惑,這兩種配置方式究竟有什么區(qū)別?為什么第一種需要注銷后重新登陸生效,而第二種不需要呢?我們接下來帶大家深入了解下環(huán)境變量相關(guān)的知識。
linux中環(huán)境變量包括系統(tǒng)級和用戶級,系統(tǒng)級的環(huán)境變量是每個登錄到系統(tǒng)的用戶都要讀取的系統(tǒng)變量,而用戶級的環(huán)境變量則是該用戶使用系統(tǒng)時(shí)加載的環(huán)境變量。所謂的環(huán)境變量配置文件,就是在shell登陸的時(shí)候自動加載的那些文件。而登陸分為兩種登陸卻分為兩種:
login shell登陸和interactive shell登陸。
所謂的login shell登陸,實(shí)際上就是指需要輸入密碼的登陸。具體的說,包括開機(jī)登陸、ssh登陸,或者是輸入bash --login這種“假裝自己輸入密碼登陸”的方式。 在這種登陸方式下,系統(tǒng)會先讀取/etc/profile文件,然后,系統(tǒng)會依次搜索~/.bash_profile、~/.bash_login、~/.profile 這三個文件,并運(yùn)行只其中第一個存在的文件。Linux系統(tǒng)中/etc/environment是設(shè)置整個系統(tǒng)的環(huán)境,而/etc/profile是設(shè)置所有用戶的環(huán)境,前者與登錄用戶無關(guān),后者與登錄用戶有關(guān)。login shell登陸時(shí)系統(tǒng)會先執(zhí)行profile文件再讀取environment獲取用戶及系統(tǒng)的環(huán)境變量信息以為運(yùn)行準(zhǔn)備好環(huán)境。因此這些文件都是在登陸的時(shí)候就讀取生效了,如果改變以后需要重新登陸重新讀取生效。
所謂的interactive shell登陸,其實(shí)就是相對于login shell登陸而言的。我們平時(shí)在登陸后右鍵打開終端、或者CTRL+ALT+T打開終端都是interactive shell登陸。 在這種登陸方式下,系統(tǒng)會依次讀取/etc/bash.bashrc和~/.bashrc,并加以執(zhí)行。 通常情況下,~/.bashrc文件里會默認(rèn)記錄一些常量和一些別名,比如&PATH變量,該變量記錄著一些命令可執(zhí)行文件的路徑等,當(dāng)我們修改了文件,只需要source一下文件即可生效。
以上分析給我們的啟示是,當(dāng)我們?yōu)榉⻊?wù)器配置變量時(shí),盡量配置到/etc/profile里或者~/.bash_profile里,因?yàn)橛胹sh登錄服務(wù)器是基本上用不到.bashrc文件的;當(dāng)我們給自己的電腦配置環(huán)境變量時(shí),盡量配置到.bashrc里,因?yàn)檫@樣我們只要打開終端就會讀入這個文件,這樣就可以不用注銷就能應(yīng)用配置了(只有注銷重新登錄才會應(yīng)用/etc/profile一類的配置文件)。
好了,讀到這小伙伴應(yīng)該對環(huán)境變量的相關(guān)知識有一定了解了吧,應(yīng)該知道環(huán)境變量有什么作用,怎么配置了吧。希望大家以后配置工具的環(huán)境變量不再迷惑了。