| 環(huán)境變量的本質(zhì)就是變量,它的服務(wù)對(duì)象是shell程序,它分為局部環(huán)境變量和全局環(huán)境變量,分別有不同的作用域和自然生命周期 1.不同角色的shell不同的情況下,會(huì)產(chǎn)生不同的shell。既然環(huán)境變量是服務(wù)于shell程序的,那么就來分析一下不同角色的shell 交互式shell:我們打開一個(gè)tty控制臺(tái),實(shí)際就打開了一個(gè)交互式shell。我們輸入的bash命令就由交互式shell解析非交互式shell:就是各種腳本程序登錄shell:登錄系統(tǒng)后,首個(gè)執(zhí)行的應(yīng)用程序bash,該應(yīng)用程序就稱之為登錄shell。登錄shell執(zhí)行后,才會(huì)由它陸續(xù)去執(zhí)行其他的交互式shell,非交互式shell,可以認(rèn)為它是所有shell的祖宗
 2.全局環(huán)境變量使用export導(dǎo)出的環(huán)境變量,就是全局環(huán)境變量 全局環(huán)境變量的作用域?yàn)椋簞?chuàng)建該全局環(huán)境變量的shell及其子孫shell/進(jìn)程。即子shell復(fù)制父shell的全套環(huán)境變量,子shell對(duì)得到的環(huán)境變量做修改并不會(huì)影響到父shell全局環(huán)境變量的自然生命周期為:創(chuàng)建該全局環(huán)境變量的shell死亡,并且其子孫shell/進(jìn)程也全部死亡(通俗的來說,創(chuàng)建者的整個(gè)家族滅門了)
 始祖環(huán)境變量登錄系統(tǒng)后,首個(gè)執(zhí)行的應(yīng)用程序bash(登錄shell)所創(chuàng)建的一堆全局環(huán)境變量,它們稱為始祖環(huán)境變量。這一堆環(huán)境變量的生命周期是永久的啟動(dòng)shell會(huì)執(zhí)行/etc/profile,導(dǎo)出一些通用全局環(huán)境變量,export PATH USER LOGNAME MAIL HOSTNAME等,所有用戶的shell進(jìn)程都可以訪問到這些變量,我們可以在里面添加系統(tǒng)級(jí)別的環(huán)境變量。然后再依次執(zhí)行~/.bash_profile、~/.bash_login、~/.profile或者~./bashrc,或者/etc/bashrc,來初始化一些用戶特有的環(huán)境變量,需要注意的是后面幾個(gè)文件不一定都存在
 常見需求:增加PATH在/etc/profile最后加上export PATH="/xxxx/xxx$PATH" 全局環(huán)境變量的一般使用方法例一,比如在控制臺(tái)(交互式shell)中輸入export AAA="123",那么今后在該控制臺(tái)中,直接或間接執(zhí)行的shell,都將繼承該控制臺(tái)(交互式shell)留下來的全局環(huán)境變量,包括加入的VAR="123"例二,有兩個(gè)“非交互式shell”a.sh、b.sh,a.sh中執(zhí)行了b.sh,b.sh中執(zhí)行了export BBB="123"?,F(xiàn)在執(zhí)行a.sh,則b.sh是其子shell,所以BBB這個(gè)環(huán)境變量對(duì)a.sh起不了作用。再一次印證了全局環(huán)境變量只能由創(chuàng)建者shell傳給子孫shell
 3.局部環(huán)境變量不使用export導(dǎo)出的環(huán)境變量,就是局部環(huán)境變量。它通常作為某個(gè)腳本(非交互式shell)自己的私有變量 局部環(huán)境變量的作用域?yàn)椋簝H僅創(chuàng)建者shell自己。其父shell、其子shell均無法訪問
 4.操作環(huán)境變量腳本和控制臺(tái)中皆可設(shè)置環(huán)境變量,方法如下,尤其要注意bash的語法中“=”兩邊不能有空格,變量值中間也不能有空格,有的話要用單引號(hào)圍起來
 test=123    #局部環(huán)境變量一般用小寫
export TEST=123 #全局環(huán)境變量一般用大寫
export MYNAME='XIAO BA WU' #變量值有空格,要用單引號(hào)圍起來
export test #也可以這樣把前面的局部變量導(dǎo)出到全局
 我們可以輸入下列命令來查看當(dāng)前控制臺(tái)(交互式shell)的環(huán)境變量
 printenv    #查看所有環(huán)境變量
echo $HOME #查看指定環(huán)境變量
 我們可以這樣取消當(dāng)前控制臺(tái)(交互式shell)環(huán)境變量
 unset MYNAME
 |