Linux之環(huán)境變量
本文將介紹Linux中的環(huán)境變量
abstract.jpeg
查看環(huán)境變量
查看全局環(huán)境變量
環(huán)境變量大體可以分為兩類:全局環(huán)境變量、局部環(huán)境變量。前者變量名通常使用大寫字母,后者變量名通常使用小寫字母。可通過下述env、printenv命令查看當(dāng)前所有的全局環(huán)境變量
#?當(dāng)前所有的全局環(huán)境變量
env
#?當(dāng)前所有的全局環(huán)境變量
printenv
figure 1.jpeg
figure 2.jpeg此外,利用printenv命令還可以查看指定的全局環(huán)境變量
#?查看指定的全局環(huán)境變量
printenv?<全局環(huán)境變量名>
figure 3.jpeg查看局部環(huán)境變量
對于用戶自定義的局部環(huán)境變量而言,則可以通過echo命令來查看。注意變量名前面需要加 $ 美元符號
#?查看指定的局部環(huán)境變量
printenv?$<局部環(huán)境變量名>
figure 4.jpeg事實(shí)上,echo命令對于查看指定的全局環(huán)境變量也是有效的
#?查看指定的全局環(huán)境變量
printenv?$<全局環(huán)境變量名>
figure 5.jpeg
設(shè)置環(huán)境變量
設(shè)置局部環(huán)境變量
可通過如下方式設(shè)置局部環(huán)境變量。需注意賦值符兩邊不能有任何空格。如果用于賦值的字符串包含空格,則必須用單引號或雙引號進(jìn)行包裹
#?設(shè)置局部環(huán)境變量
<變量名>=<變量值>
my_age=18
my_name="Aaron?Zhu"
figure 6.jpeg對于局部環(huán)境變量而言,其僅對當(dāng)前Shell進(jìn)程而言是有效的。故父Shell中的局部環(huán)境變量對于子Shell來說是無效的
figure 7.jpeg子Shell中的局部環(huán)境變量對于父Shell來說同樣也是無效的
figure 8.jpeg設(shè)置全局環(huán)境變量
先創(chuàng)建局部環(huán)境變量,然后再將其導(dǎo)出到全局環(huán)境中。此時即為全局環(huán)境變量了
#?設(shè)置局部環(huán)境變量
<變量名>=<變量值>
#?將局部環(huán)境變量?導(dǎo)出?到全局環(huán)境中
export?<變量名>
figure 9.jpeg上述兩條命令可以合二為一
#?設(shè)置局部環(huán)境變量,?并將該局部環(huán)境變量?導(dǎo)出?到全局環(huán)境中
export?<變量名>=<變量值>
figure 10.jpeg父Shell中設(shè)置的全局環(huán)境變量,對于子Shell是可見的
figure 11.jpeg子Shell中設(shè)置的全局環(huán)境變量,對于父Shell則是不可見的
figure 12.jpeg對于父Shell中設(shè)置的全局環(huán)境變量而言,如果在父Shell中對其進(jìn)行修改,則會同步反映到子Shell當(dāng)中;但如果在子Shell中對其進(jìn)行修改,則不會同步反映到父Shell當(dāng)中
figure 13.jpeg持久化
事實(shí)上即使利用export命令創(chuàng)建了全局環(huán)境變量,其也僅對當(dāng)前Shell及其子Shell有效。一旦當(dāng)前Shell關(guān)閉,重新打開一個新的Shell后,我們還是需要再次重新定義,顯然非常麻煩。故我們通常會將設(shè)置全局環(huán)境變量的命令寫入到用戶目錄下的相關(guān)文件當(dāng)中。這樣全局環(huán)境變量就實(shí)現(xiàn)了對該用戶的永久生效。因?yàn)橐坏┰俅未蜷_Shell時,該相關(guān)文件會被調(diào)用,完成對全局環(huán)境變量的設(shè)置
具體地,如果使用bash,則寫入到 .bashrc 文件中;如果使用zsh,則寫入到 .zshrc 文件中。這里我們以bash為例,一旦更新了用戶目錄下的.bashrc文件后,下次重新打開新Shell后就會發(fā)現(xiàn)全局環(huán)境變量生效了。如果期望在當(dāng)前Shell中立即生效,只需執(zhí)行source命令即可
#?重新讀取.bashrc文件
source?.bashrc
figure 14.jpeg
刪除環(huán)境變量
無論是全局環(huán)境變量,還是局部環(huán)境變量。均可通過下述方法進(jìn)行刪除
#?刪除環(huán)境變量
unset?<變量名>
figure 15.jpeg對于父Shell中設(shè)置的全局環(huán)境變量而言,如果在父Shell中將其刪除,則其所創(chuàng)建的子Shell中也會刪除該環(huán)境變量
figure 16.jpeg對于父Shell中設(shè)置的全局環(huán)境變量而言,如果在其所創(chuàng)建的子Shell中將其刪除,則父Shell中并不會刪除該環(huán)境變量,依然有效可用
figure 17.jpeg
PATH環(huán)境變量
在Linux中,我們最常接觸的環(huán)境變量就是PATH。它定義了用于查找命令、程序的目錄。如下所示,PATH中的目錄之間使用:冒號分隔
figure 18.jpeg日常使用中最多的操作就是新增路徑到PATH環(huán)境變量當(dāng)中,可通過如下方式實(shí)現(xiàn)。無須從頭開始定義
#?向PATH環(huán)境變量中新增路徑
export?PATH=$PATH:<新路徑1>:<新路徑2>
figure 19.jpeg
參考文獻(xiàn)
- Linux命令行與shell腳本編程大全·第4版 Richard Blum、Christine Bresnahan著
