四烫罩、使用Linux環(huán)境變量

個(gè)人理解惜傲,環(huán)境變量就是給那些復(fù)雜的語(yǔ)句起一個(gè)簡(jiǎn)單的名字,方便書(shū)寫(xiě)贝攒,管理

命令 作用
printenvenv 查看全局環(huán)境變量
set 查看局部環(huán)境變量
= 自定義局部環(huán)境變量
export 導(dǎo)出自定義局部環(huán)境變量
unset 刪除環(huán)境變量

1.環(huán)境變量

存儲(chǔ)shell會(huì)話(huà)和工作環(huán)境的信息盗誊,換句話(huà)說(shuō)就是一些數(shù)據(jù)信息可以存儲(chǔ)在內(nèi)存中,shell或程序能夠訪(fǎng)問(wèn)到他們。環(huán)境變量一般分為全局變量哈踱、局部變量

查看全局環(huán)境變量 printenvenv查看
shell中都會(huì)有一些預(yù)先設(shè)定好的環(huán)境變量荒适,可以通過(guò)命令printenvenv命令查看
例:

?  ~ env
COLORFGBG=7;0
ITERM_PROFILE=Default
XPC_FLAGS=0x0
LANG=zh_CN.UTF-8
SHELL=/bin/zsh
TERM_PROGRAM_VERSION=3.0.15
TERM_PROGRAM=iTerm.app
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
TERM=xterm-256color
XPC_SERVICE_NAME=0
SHLVL=1

上面只展示了一部分,涉及到個(gè)人信息开镣,刪除了一分部
*注意 printenvenv的區(qū)別是printenv可以展示單個(gè)變量信息env不可以
例:

?  ~ printenv PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
?  ~ env PATH
env: PATH: No such file or directory

*注意 命令echo也可以顯示單個(gè)變量信息刀诬,不過(guò)要在變量前加$
例:

?  ~ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

*注意 變量名前加$,能夠讓變量直接當(dāng)命令行參數(shù)使用邪财,可以試一下命令ls $HOME看看效果
*注意 printenvenv命令列出的都是全局變量陕壹,這些變量都可以用在子shell中

查看局部環(huán)境變量
系統(tǒng)沒(méi)有提供查看局部變量的命令,但是可以通過(guò)set命令查看某個(gè)進(jìn)程的所有環(huán)境變量(包括局部和全局)

*注意 set命令不會(huì)列出所有的環(huán)境變量卧蜓,并且有些環(huán)境變量是沒(méi)有值的

2.用戶(hù)自定義環(huán)境變量

自定義局部環(huán)境變量 =

例:

?  ~ my_variable=hello
?  ~ echo $my_variable
hello

*注意 利用=可直接設(shè)置一個(gè)局部環(huán)境變量
*注意 =左右都是沒(méi)有空格的帐要,否則設(shè)置將不會(huì)成功
*注意 當(dāng)給帶空格的字符串設(shè)置環(huán)境變量的時(shí)候用引號(hào),例如:my_variable="hello world"
*注意 一般我們自定義的環(huán)境變量都用小寫(xiě)字母弥奸,系統(tǒng)自定義的環(huán)境變量是大寫(xiě)榨惠,這樣更容易區(qū)分管理
*注意 上面的命令創(chuàng)建的是局部環(huán)境變量,在子shell中不可用
*注意 子shell中創(chuàng)建的局部環(huán)境變量盛霎,當(dāng)退出子shell的時(shí)候赠橙,父shell也是不可用的

自定義全局環(huán)境變量 在局部變量的基礎(chǔ)上導(dǎo)出export
例:

?  ~ my_variable=hello
?  ~ export my_variable
?  ~ printenv my_variable
hello

導(dǎo)出的變量就變成了全局變量,在子shell中也可以使用該變量

*注意 在子shell中修改全局變量愤炸,不會(huì)對(duì)父shell產(chǎn)生影響期揪,即使用了export導(dǎo)出命令

刪除環(huán)境變量 unset
例:

?  ~ unset my_variable

*注意 在子shell刪除全局變量不會(huì)影響到父shell

3.設(shè)置PATH環(huán)境變量

PATH環(huán)境變量相信大家都聽(tīng)說(shuō)過(guò),他定義了用于進(jìn)行命令或程序查找的目錄规个,各個(gè)目錄間用分號(hào)分隔凤薛,這里說(shuō)一下如何配置

從新定義很簡(jiǎn)單,只需引用原來(lái)的PATH值诞仓,然后添加新目錄到后面就行了
例:

PATH=$PATH:/aaa/bbb

這樣就修改了PATH環(huán)境變量
*注意 如果希望子shell也能用缤苫,要用export將PATH導(dǎo)出
*注意 拼接當(dāng)前目錄到PATH,例如:PATH=$PATH:.
*注意 對(duì)PATH的修改墅拭,只能持續(xù)到退出或重啟系統(tǒng)活玲,下面介紹如何永久保持環(huán)境變量的修改效果

首先分別做兩個(gè)操作
ls -a /etc/
輸入上面的命令,回車(chē)谍婉,會(huì)發(fā)現(xiàn)列出了好多文件舒憾,這些都是系統(tǒng)文件
再做操作
ls -a $HOME
輸入上面的命令,回車(chē)穗熬,會(huì)發(fā)現(xiàn)列出了好多文件镀迂,這些都是當(dāng)前登錄用戶(hù)的個(gè)人文件

一般登錄shell的時(shí)候會(huì)從幾個(gè)默認(rèn)的文件啟動(dòng),這些文件叫做啟動(dòng)文件或環(huán)境文件唤蔗,bash會(huì)根據(jù)你啟動(dòng)的不同方式招拙,讀取不同的啟動(dòng)文件唧瘾,bash shell的啟動(dòng)方式有三種

1.登錄時(shí)作為默認(rèn)登錄shell
2.作為非登錄shell的交互式shell
3.作為運(yùn)行腳本的非交互shell

一般啟動(dòng)的時(shí)候會(huì)先讀取系統(tǒng)文件的/etc/profile文件,這個(gè)是系統(tǒng)的主啟動(dòng)文件别凤,哪個(gè)shell啟動(dòng)都會(huì)讀取該文件

再根據(jù)不同的需求讀取個(gè)人文件的$HOME/.bash_profile$HOME/.bashrc领虹、$HOME/.bash_login$HOME/.profile(其實(shí)不同的系統(tǒng)文件的差異是非常大的规哪,但是一般的都是讀取這四個(gè)文件)

上面說(shuō)的啟動(dòng)過(guò)程是登錄時(shí)作為默認(rèn)登錄shell啟動(dòng)(打開(kāi)控制臺(tái)就是這種啟動(dòng)方式)

下面說(shuō)一下作為非登錄shell的交互式shell
當(dāng)在控制臺(tái)輸入bash,啟動(dòng)一個(gè)子shell的時(shí)候塌衰,就是作為非登錄shell的交互式shell诉稍,這時(shí)不會(huì)讀取/etc/profile系統(tǒng)文件,而是直接讀取個(gè)人文件$HOME/.bash_profile最疆、$HOME/.bashrc杯巨、$HOME/.bash_login$HOME/.profile

最后介紹一下作為運(yùn)行腳本的非交互shell
系統(tǒng)執(zhí)行shell腳本用的就是非交互式shell,因?yàn)闆](méi)有和我們直接交互的地方(命令行輸入等)努酸,所以叫非交互shell
一般情況下服爷,bash shell會(huì)提供一個(gè)BASH_ENV環(huán)境變量,通過(guò)這個(gè)變量來(lái)查看執(zhí)行啟動(dòng)的文件获诈,如果有指定的文件仍源,shell會(huì)執(zhí)行該文件里的命令,這些命令通常包括shell腳本變量設(shè)置
如果沒(méi)有設(shè)置BASH_ENV環(huán)境變量舔涎,shell腳本會(huì)通過(guò)啟動(dòng)一個(gè)子shell來(lái)執(zhí)行笼踩,子shell會(huì)集成父shell的變量環(huán)境,父shell一般就是登錄shell亡嫌,登錄的時(shí)候會(huì)啟用上面介紹過(guò)的登錄時(shí)作為默認(rèn)登錄shell中涉及的文件

通過(guò)上面三種登錄方式的介紹嚎于,應(yīng)該理解了shell進(jìn)程以及對(duì)應(yīng)的環(huán)境文件,找出這些文件挟冠,做修改就可以永久性的修改環(huán)境變量了

*注意 一般我們做修改的都是個(gè)人文件下($HOME目錄下)的環(huán)境變量修改于购,這樣不影響系統(tǒng)文件,即使系統(tǒng)更新也不會(huì)影響個(gè)人的配置
*注意 我們平時(shí)用的GUI客戶(hù)端的環(huán)境變量可能需要再另外一些配置文件中設(shè)置圃郊,和bash shell環(huán)境變量不在一個(gè)地方

4.數(shù)組變量

環(huán)境變量可以作為數(shù)組使用

例:創(chuàng)建一個(gè)數(shù)組變量

?  ~ my_test=(one two three)
?  ~ echo $my_test
one two three

可以用數(shù)組下標(biāo)提取單獨(dú)某個(gè)數(shù)組元素

?  ~ echo ${my_test[1]}
one

通過(guò)數(shù)組下標(biāo)改變某個(gè)位置的值

?  ~ my_test[1]=zero
?  ~ echo $my_test
zero two three

*注意 數(shù)組變量的操作還有很多价涝,大家自行查閱
*注意 不同的shell對(duì)數(shù)組變量操作會(huì)有些許的不同,例如下標(biāo)的起始是以0還是以1開(kāi)頭持舆、刪除數(shù)組變量等色瘩,上面對(duì)數(shù)組變量的操作是在zsh下操作的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市逸寓,隨后出現(xiàn)的幾起案子居兆,更是在濱河造成了極大的恐慌,老刑警劉巖竹伸,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泥栖,死亡現(xiàn)場(chǎng)離奇詭異簇宽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)吧享,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)魏割,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钢颂,你說(shuō)我怎么就攤上這事钞它。” “怎么了殊鞭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵遭垛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我操灿,道長(zhǎng)锯仪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任趾盐,我火速辦了婚禮庶喜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谤碳。我一直安慰自己溃卡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布蜒简。 她就那樣靜靜地躺著瘸羡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搓茬。 梳的紋絲不亂的頭發(fā)上犹赖,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音卷仑,去河邊找鬼峻村。 笑死,一個(gè)胖子當(dāng)著我的面吹牛锡凝,可吹牛的內(nèi)容都是我干的粘昨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窜锯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼张肾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起锚扎,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吞瞪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后驾孔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芍秆,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惯疙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妖啥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霉颠。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖荆虱,靈堂內(nèi)的尸體忽然破棺而出掉分,到底是詐尸還是另有隱情,我是刑警寧澤克伊,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站华坦,受9級(jí)特大地震影響愿吹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惜姐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一犁跪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧歹袁,春花似錦坷衍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至孟抗,卻和暖如春迁杨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凄硼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工铅协, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摊沉。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓狐史,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親说墨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骏全,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,168評(píng)論 2 33
  • Ubuntu的發(fā)音 Ubuntu突颊,源于非洲祖魯人和科薩人的語(yǔ)言鲁豪,發(fā)作 oo-boon-too 的音潘悼。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 99,271評(píng)論 9 467
  • 說(shuō)明,本文所使用的機(jī)器是:SUSE Linux Enterprise爬橡。 問(wèn)題定位 這看起來(lái)像是環(huán)境變量引起的問(wèn)題治唤,...
    lework閱讀 2,928評(píng)論 6 11
  • 每個(gè)女生都應(yīng)該有個(gè)公主夢(mèng) 近日,王馬離婚事件“成功”轉(zhuǎn)移人們對(duì)奧運(yùn)的關(guān)注力度糙申,成為萬(wàn)人注目的焦點(diǎn)宾添。 對(duì)于...
    傾仸閱讀 213評(píng)論 0 1
  • 凌晨4點(diǎn)睡的,早上10點(diǎn)醒來(lái)柜裸,腦袋昏昏成成缕陕。我倆的感冒稍有好轉(zhuǎn),但還是很難受疙挺。 我們想出門(mén)趕在中午時(shí)間扛邑,去Bett...
    MrCooper閱讀 329評(píng)論 0 0