Linux設(shè)置和查看環(huán)境變量

命令簡(jiǎn)述


一采桃、顯示環(huán)境變量TEST
echo $TEST
test
二懒熙、設(shè)置一個(gè)新的環(huán)境變量TEST
export TEST="Hello" 
echo $TEST
Hello
三、使用env命令顯示所有的環(huán)境變量
env 
TEST=Hello
四普办、使用set命令顯示所有本地定義的Shell變量
set
TEST=Hello
五工扎、使用unset命令來(lái)清除環(huán)境變量

清除環(huán)境變量的值用unset命令。如果未指定值衔蹲,則該變量值將被設(shè)為NULL肢娘。示例如下:

#增加一個(gè)環(huán)境變量TEST 
export TEST="Test..." 

#此命令如有輸出呈础,證明環(huán)境變量TEST已經(jīng)存在了 
$ env|grep TEST 
TEST=Test... 

#刪除環(huán)境變量TEST
unset TEST  

#此命令如沒有輸出,證明環(huán)境變量TEST已經(jīng)不存在了
$ env|grep TEST 
六橱健、使用readonly命令設(shè)置只讀變量

如果使用了readonly命令的話而钞,變量就不可以被修改或清除了。示例如下:

#增加一個(gè)環(huán)境變量TEST 
export TEST="Test" 

#將環(huán)境變量TEST設(shè)為只讀 
$ readonly TEST 

#會(huì)發(fā)現(xiàn)此變量不能被刪除
$ unset TEST  
-bash: unset: TEST: cannot unset: readonly variable 

#會(huì)發(fā)現(xiàn)此變量不能被修改
export TEST='NEW'
-bash: TEST: readonly variable 

環(huán)境變量的設(shè)置位于/etc/profile文件

如果需要增加新的環(huán)境變量可以添加至

export path=$path:/path1:/path2:/pahtN

基本概念


1. Linux 變量種類

按變量的生存周期來(lái)劃分拘荡,Linux變量可分為兩類:

  • 永久的:需要修改配置文件臼节,變量永久生效。
  • 臨時(shí)的:使用export命令聲明即可珊皿,變量在關(guān)閉shell時(shí)失效网缝。
2. 設(shè)置變量的三種方法
2.1 在/etc/profile文件中添加變量【對(duì)所有用戶生效(永久的)】

vim在文件/etc/profile文件中增加變量,該變量將會(huì)對(duì)Linux下所有用戶有效蟋定,并且是“永久的”嫩海。

例如:編輯/etc/profile文件溺欧,添加CLASSPATH變量

# vi /etc/profile 
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib 

注:修改文件后要想馬上生效,還要運(yùn)行source /etc/profile。不然只能在下次重進(jìn)此用戶時(shí)生效官册。

2.2 在用戶目錄下的.bash_profile文件中增加變量【對(duì)單一用戶生效(永久的)】

vim在用戶目錄下的.bash_profile文件中增加變量,改變量?jī)H會(huì)對(duì)當(dāng)前用戶有效瞒大,并且是“永久的”拣度。

例如:編輯guok用戶目錄(/home/guok)下的.bash_profile

$ vi /home/guok/.bash.profile 

添加如下內(nèi)容:

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib 

注:修改文件后要想馬上生效,還要運(yùn)行source /home/guok/.bash_profile蝇狼。不然只能在下次重進(jìn)此用戶時(shí)生效阅畴。

2.3 直接運(yùn)行export命令定義變量【只對(duì)當(dāng)前shell(BASH)有效(臨時(shí)的)】

shell的命令行下直接使用[export 變量名=變量值] 定義變量,該變量只在當(dāng)前的shell(BASH)或其子shell(BASH)下是有效的迅耘,shell關(guān)閉了贱枣,變量也就失效了,再打開新shell時(shí)就沒有這個(gè)變量颤专,需要使用的話還需要重新定義纽哥。

3.環(huán)境變量的查看
3.1 使用echo命令查看單個(gè)環(huán)境變量。例如:
echo $PATH 
3.2 使用env查看所有環(huán)境變量栖秕。例如:
env 
3.3 使用set查看所有本地定義的環(huán)境變量春塌。

unset可以刪除指定的環(huán)境變量。

4. 常用的環(huán)境變量
  • PATH 決定了shell將到哪些目錄中尋找命令或程序
  • HOME 當(dāng)前用戶主目錄
  • HISTSIZE 歷史記錄數(shù)
  • LOGNAME 當(dāng)前用戶的登錄名
  • HOSTNAME 指主機(jī)的名稱
  • SHELL 當(dāng)前用戶Shell類型
  • LANGUGE 語(yǔ)言相關(guān)的環(huán)境變量簇捍,多語(yǔ)言可以修改此環(huán)境變量
  • MAIL 當(dāng)前用戶的郵件存放目錄

特殊例子

當(dāng)應(yīng)用程序執(zhí)行時(shí)只壳,它接收一組環(huán)境變量∈钏埽可以使用 env 命令查看所有與終端相關(guān)的環(huán)境變量吼句。

對(duì)于進(jìn)程來(lái)說(shuō),其運(yùn)行時(shí)的環(huán)境變量可以使用下面的命令來(lái)查看:

cat   /proc/$PID/environ

其中事格,將PID設(shè)置成相關(guān)進(jìn)程的進(jìn)程IDPID總是一個(gè)整數(shù))惕艳。

示例

pgrep命令:用來(lái)查找進(jìn)程的信息搞隐,通常會(huì)和kill命令來(lái)連用,在指定條件下kill問題進(jìn)程远搪。

使用pgrep命令來(lái)查看進(jìn)程的 PID號(hào)劣纲。
根據(jù)PID號(hào)來(lái)獲取該進(jìn)程相關(guān)的環(huán)境變量。

export命令用來(lái)設(shè)置環(huán)境變量终娃。至此之后味廊,從當(dāng)前shell腳本執(zhí)行的任何應(yīng)用程序都會(huì)繼承這個(gè)變量。我們可以按照自己的需要棠耕,在執(zhí)行的應(yīng)用程序或者shell腳本中導(dǎo)出特定的變量余佛。在默認(rèn)情況下,有很多標(biāo)準(zhǔn)環(huán)境變量可供shell使用窍荧。

5. 登入系統(tǒng)環(huán)境變量讀取步驟

當(dāng)?shù)侨胂到y(tǒng)時(shí)候獲得一個(gè)shell進(jìn)程時(shí)辉巡,讀取環(huán)境變量值有三步 :

  1. 首先讀入的是全局環(huán)境變量/etc/profile,然后根據(jù)其內(nèi)容讀取額外設(shè)定的文檔蕊退,如 /etc/profile.d/etc/inputrc

  2. 然后根據(jù)登入的不同用戶帳號(hào)郊楣,去其home目錄讀取~/.bash_profile,如果讀取不了就讀取~/.bash_login瓤荔,這個(gè)也讀取不了才會(huì)讀取~/.profile净蚤,這三個(gè)文檔設(shè)定基本上是一樣的,讀取有優(yōu)先關(guān)系

  3. 然后在根據(jù)用戶帳號(hào)讀取~/.bashrc

/etc/*~/.*區(qū)別:

  • /etc/profile输硝,/etc/bashrc 是系統(tǒng)全局環(huán)境變量設(shè)定
  • ~/.profile今瀑,~/.bashrc是用戶home目錄下的私有環(huán)境變量設(shè)定

~/.profile~/.bashrc的區(qū)別:

  • ~/.profile可以設(shè)定本用戶專有的路徑,環(huán)境變量等点把,它只在登入的時(shí)候執(zhí)行一次
  • ~/.bashrc也是某用戶專有設(shè)定文檔橘荠,可以設(shè)定路徑,每次shell script的執(zhí)行都會(huì)使用它一次
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末郎逃,一起剝皮案震驚了整個(gè)濱河市哥童,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌褒翰,老刑警劉巖贮懈,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異优训,居然都是意外死亡朵你,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門型宙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人伦吠,你說(shuō)我怎么就攤上這事妆兑』昀梗” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵搁嗓,是天一觀的道長(zhǎng)芯勘。 經(jīng)常有香客問我,道長(zhǎng)腺逛,這世上最難降的妖魔是什么荷愕? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮棍矛,結(jié)果婚禮上安疗,老公的妹妹穿的比我還像新娘。我一直安慰自己够委,他們只是感情好荐类,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茁帽,像睡著了一般玉罐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潘拨,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天吊输,我揣著相機(jī)與錄音,去河邊找鬼铁追。 笑死季蚂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的脂信。 我是一名探鬼主播癣蟋,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼狰闪!你這毒婦竟也來(lái)了疯搅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤埋泵,失蹤者是張志新(化名)和其女友劉穎幔欧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丽声,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡礁蔗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雁社。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浴井。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖霉撵,靈堂內(nèi)的尸體忽然破棺而出磺浙,到底是詐尸還是另有隱情洪囤,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布撕氧,位于F島的核電站瘤缩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏伦泥。R本人自食惡果不足惜剥啤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望不脯。 院中可真熱鬧府怯,春花似錦、人聲如沸跨新。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)域帐。三九已至赘被,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肖揣,已是汗流浹背民假。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留龙优,地道東北人羊异。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像彤断,于是被迫代替她去往敵國(guó)和親野舶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容