linux下設(shè)定環(huán)境變量的方法介紹
發(fā)布時間:2012-10-31 16:18:45 作者:佚名
我要評論

在linux下設(shè)定環(huán)境變量時,如果只是臨時用一下,可以直接在shell下用set或export命令設(shè)定環(huán)境變量,如果希望此環(huán)境變量每次開機(jī)或打開 shell時自動設(shè)定而無須每次都手動設(shè)定
那么需要將export命令寫入某個系統(tǒng)文件中,擁有這種功能的文件常見的有如下幾個:
/etc/environment 或 /etc/profile 或 ~/.profile 或 /etc/bash.bashrc 或 ~/.bashrc等。
有這么多可以用,到底它們有什么區(qū)別,誰先誰后呢?
首先,來看看這幾個文件都是干什么的:
1./etc/environment–>是系統(tǒng)在登錄時讀取的第一個文件,用于為所有進(jìn)程設(shè)置環(huán)境變量。系統(tǒng)使用此文件時并不是執(zhí)行此文件中的命 令,而是根據(jù)KEY=VALUE模式的代碼,對KEY賦值以VALUE,因此文件中如果要定義PATH環(huán)境變量,只需加入一行形如 PATH=$PATH:/xxx/bin的代碼即可。
2./etc/profile–>是系統(tǒng)登錄時執(zhí)行的第二個文件,可以用于設(shè)定針對全系統(tǒng)所有用戶的環(huán)境變量。
3.~/.profile–>是對應(yīng)當(dāng)前登錄用戶的profile文件,用于定制當(dāng)前用戶的個人工作環(huán)境。
4./etc/bash.bashrc–>是針對所有用戶的bash初始化文件,在此中設(shè)定的環(huán)境變量將應(yīng)用于所有用戶的shell中,此文件會在用戶每次打開shell時執(zhí)行一次。
5.~/.bashrc–>是對應(yīng)當(dāng)前登錄用戶的bash初始化文件,當(dāng)用戶每次打開shell時,系統(tǒng)都會執(zhí)行此文件一次。
那么根據(jù)以上描述,這幾個文件的執(zhí)行先后順序應(yīng)當(dāng)是:
/etc/enviroment –>/etc/profile –>~/.profile –>/etc/bash.bashrc–> ~/.bashrc
為了驗(yàn)證此順序是否正確,這里可以做一個小試驗(yàn),假定我們登錄的用戶名為xyz。在/etc/environment中加入一行:
ENV_MSG=”this is /etc/environment”
這樣也就是添加了一個環(huán)境變量ENV_MSG,然后在/etc/profile中加入兩行代碼:
echo $ENV_MSG >> /home/xyz/log.txt
echo “this is /etc/profile” >> /home/xyz/log.txt
這樣,如果/etc/environment在profile之前被系統(tǒng)讀取,則在/home/xyz/log.txt 中會先后打印出EVN_MSG的值和 this is /etc/profile這兩條消息。
在/home/xyz/.profile中加入一行代碼:
echo “this is .profile” >> /home/xyz/log.txt
在/etc/bash.bashrc中加入一行代碼:
echo “this is /etc/bash.bashrc” >> /home/xyz/log.txt
在/home/xyz/.bashrc中加入一行代碼:
echo “this is .bashrc” >> /home/xyz/log.txt
然后,重啟計(jì)算機(jī),看看log.txt文件中會是什么樣子。
啟動計(jì)算機(jī)后以xyz用戶登錄并立即打開/home/xyz/log.txt,可以看到文件中有如下三行消息:
this is /etc/environment
this is /etc/profile
this is .profile
這說明系統(tǒng)在啟動登錄的過程中依次讀取執(zhí)行了/etc/enviroment 、/etc/profile和~/.profile中的內(nèi)容。
然后打開一個shell窗口,log文件中就會增加兩行消息:
this is /etc/bash.bashrc
this is .bashrc
這說明在打開shell過程中,系統(tǒng)又依次執(zhí)行/etc/bash.bashrc和~/.bashrc。如果關(guān)閉shell窗口后再次打開一個新的 shell窗口,則log文件中會又增加兩行同樣的消息。由此可以獲知,每次打開一個新shell,系統(tǒng)都會重復(fù)執(zhí)行這兩個文件,而不會再動那頭三個文件 的內(nèi)容。
接下來我們再打開/etc/environment ,把剛才寫入的那行改成ENV_MSG=”this is not /etc/environment”,然后注銷,重新以xyz登錄,結(jié)果會發(fā)現(xiàn)log文件中會又多了三行:
this is not /etc/environment
this is /etc/profile
this is .profile
這也就看出來,注銷重登錄也會引發(fā)系統(tǒng)對這三個文件的讀取與執(zhí)行。
不過,如果按下Ctrl+Alt+F1,然后登錄xyz,那么log文件中會多出來如下幾行,這又是怎么回事呢?
this is /etc/bash.bashrc
this is /etc/environment
this is /etc/profile
this is .bashrc
this is .profile
/etc/environment 或 /etc/profile 或 ~/.profile 或 /etc/bash.bashrc 或 ~/.bashrc等。
有這么多可以用,到底它們有什么區(qū)別,誰先誰后呢?
首先,來看看這幾個文件都是干什么的:
1./etc/environment–>是系統(tǒng)在登錄時讀取的第一個文件,用于為所有進(jìn)程設(shè)置環(huán)境變量。系統(tǒng)使用此文件時并不是執(zhí)行此文件中的命 令,而是根據(jù)KEY=VALUE模式的代碼,對KEY賦值以VALUE,因此文件中如果要定義PATH環(huán)境變量,只需加入一行形如 PATH=$PATH:/xxx/bin的代碼即可。
2./etc/profile–>是系統(tǒng)登錄時執(zhí)行的第二個文件,可以用于設(shè)定針對全系統(tǒng)所有用戶的環(huán)境變量。
3.~/.profile–>是對應(yīng)當(dāng)前登錄用戶的profile文件,用于定制當(dāng)前用戶的個人工作環(huán)境。
4./etc/bash.bashrc–>是針對所有用戶的bash初始化文件,在此中設(shè)定的環(huán)境變量將應(yīng)用于所有用戶的shell中,此文件會在用戶每次打開shell時執(zhí)行一次。
5.~/.bashrc–>是對應(yīng)當(dāng)前登錄用戶的bash初始化文件,當(dāng)用戶每次打開shell時,系統(tǒng)都會執(zhí)行此文件一次。
那么根據(jù)以上描述,這幾個文件的執(zhí)行先后順序應(yīng)當(dāng)是:
/etc/enviroment –>/etc/profile –>~/.profile –>/etc/bash.bashrc–> ~/.bashrc
為了驗(yàn)證此順序是否正確,這里可以做一個小試驗(yàn),假定我們登錄的用戶名為xyz。在/etc/environment中加入一行:
ENV_MSG=”this is /etc/environment”
這樣也就是添加了一個環(huán)境變量ENV_MSG,然后在/etc/profile中加入兩行代碼:
echo $ENV_MSG >> /home/xyz/log.txt
echo “this is /etc/profile” >> /home/xyz/log.txt
這樣,如果/etc/environment在profile之前被系統(tǒng)讀取,則在/home/xyz/log.txt 中會先后打印出EVN_MSG的值和 this is /etc/profile這兩條消息。
在/home/xyz/.profile中加入一行代碼:
echo “this is .profile” >> /home/xyz/log.txt
在/etc/bash.bashrc中加入一行代碼:
echo “this is /etc/bash.bashrc” >> /home/xyz/log.txt
在/home/xyz/.bashrc中加入一行代碼:
echo “this is .bashrc” >> /home/xyz/log.txt
然后,重啟計(jì)算機(jī),看看log.txt文件中會是什么樣子。
啟動計(jì)算機(jī)后以xyz用戶登錄并立即打開/home/xyz/log.txt,可以看到文件中有如下三行消息:
this is /etc/environment
this is /etc/profile
this is .profile
這說明系統(tǒng)在啟動登錄的過程中依次讀取執(zhí)行了/etc/enviroment 、/etc/profile和~/.profile中的內(nèi)容。
然后打開一個shell窗口,log文件中就會增加兩行消息:
this is /etc/bash.bashrc
this is .bashrc
這說明在打開shell過程中,系統(tǒng)又依次執(zhí)行/etc/bash.bashrc和~/.bashrc。如果關(guān)閉shell窗口后再次打開一個新的 shell窗口,則log文件中會又增加兩行同樣的消息。由此可以獲知,每次打開一個新shell,系統(tǒng)都會重復(fù)執(zhí)行這兩個文件,而不會再動那頭三個文件 的內(nèi)容。
接下來我們再打開/etc/environment ,把剛才寫入的那行改成ENV_MSG=”this is not /etc/environment”,然后注銷,重新以xyz登錄,結(jié)果會發(fā)現(xiàn)log文件中會又多了三行:
this is not /etc/environment
this is /etc/profile
this is .profile
這也就看出來,注銷重登錄也會引發(fā)系統(tǒng)對這三個文件的讀取與執(zhí)行。
不過,如果按下Ctrl+Alt+F1,然后登錄xyz,那么log文件中會多出來如下幾行,這又是怎么回事呢?
this is /etc/bash.bashrc
this is /etc/environment
this is /etc/profile
this is .bashrc
this is .profile
相關(guān)文章
CentOS 5.3 Linux 上安裝 wget jdk1.7和設(shè)置環(huán)境變量視頻教程
今天為 centos 5.3 服務(wù)器安裝jdk, 如果你要開發(fā),運(yùn)行 java 程序,jdk 是必不可少的。 如果不開發(fā),也就是不用編譯java程序,那么只安裝jre就可以了。 我這里進(jìn)行 JDK2010-01-02linux系統(tǒng)下將php和mysql命令加入到環(huán)境變量中的方法
在Linux CentOS系統(tǒng)上安裝完php和MySQL后,為了使用方便,需要將php和mysql命令加到系統(tǒng)命令中2012-11-05- linux 查看環(huán)境變量與設(shè)置環(huán)境變量在使用過程中很常見,本文整理了一些常用的與環(huán)境變量相關(guān)的命令,感興趣的朋友可以參考下希望對你有所幫助2013-04-08
- Linux中環(huán)境變量包括系統(tǒng)級和用戶級,系統(tǒng)級的環(huán)境變量是每個登錄到系統(tǒng)的用戶都要讀取的系統(tǒng)變量,而用戶級的環(huán)境變量則是該用戶使用系統(tǒng)時加載的環(huán)境變量。所以管理環(huán)境2014-03-05
linux操作系統(tǒng)環(huán)境變量LANG和NLS_LANG的區(qū)別
操作系統(tǒng)環(huán)境變量針對語言項(xiàng)設(shè)置有幾個,我經(jīng)常設(shè)置的是這兩個LANG和NLS_LANG。LANG是針對Linux系統(tǒng)的語言、地區(qū)、字符集的設(shè)置,對linux下的應(yīng)用程序有效,如date;NLS_LAN2014-04-24- 這篇文章主要介紹了linux配置java環(huán)境變量詳細(xì)步驟,需要的朋友可以參考下2014-05-05
Linux系統(tǒng)下修改環(huán)境變量PATH路徑的三種方法
這里介紹Linux的知識,比如把/etc/apache/bin目錄添加到PATH中有三種方法,看完之后你將學(xué)會Linux系統(tǒng)下如何修改環(huán)境變量PATH路徑,需要的朋友可以參考下2014-04-04