bash shell用一個(gè)叫做環(huán)境變量的特性來(lái)存儲(chǔ)有關(guān)shell會(huì)話和工作環(huán)境的信息。
環(huán)境變量分為:全局變量和局部變量
全局環(huán)境變量對(duì)于shell會(huì)話和所有生成的字shell都是可見的。局部變量則只對(duì)創(chuàng)建它們的shell可見。
查看全局變量,可以使用 env 或 printenv 命令。
set 命令:顯示為某個(gè)特定進(jìn)程設(shè)置的所有環(huán)境變量。包括全局變量、局部變量以及用戶定義變量
env、printenv、set區(qū)別:
set命令會(huì)顯示出全局變量、局部變量以及用戶定義變量。它還會(huì)按照字母順序?qū)Y(jié)果進(jìn)行排序。env 和 printenv 命令同set命令的區(qū)別在于前兩個(gè)命令不會(huì)對(duì)變量排序,也不會(huì)輸出局部變量和用戶定義變量linux命令,在這種情況下,env 和 printenv 的輸出是重復(fù)的。
用戶自定義變量
如果定義變量中含有空格的字符串,必須用單引號(hào)來(lái)界定字符串的首和尾。
注意: 定義的局部環(huán)境變量用的是小寫字母,而到目前為止所看到的系統(tǒng)環(huán)境變量都是大寫字母。
變量名、等號(hào)和值之間沒(méi)有空格。
設(shè)置局部用戶定義變量
在子shell設(shè)置的局部變量后,只能在此子shell中使用該變量,一旦離開此子shell,則不能用該變量。
設(shè)置全局環(huán)境變量
創(chuàng)建全局環(huán)境變量的方法是先創(chuàng)建一個(gè)局部環(huán)境變量。然后再把它導(dǎo)出到全局環(huán)境中。
例:
使用 export 命令使 my_variable 變成了全局環(huán)境變量。
在子shell中可以使用全局環(huán)境的值。但在子shell中修改全局環(huán)境變量并不會(huì)影響到父shell中該變量的值。
子shell甚至無(wú)法使用export 命令改變父shell中全局環(huán)境變量的值。
盡管子shell重新定義并導(dǎo)出了變量my_variable ,但父shell中的my_variable 變量依然保留原先的值。
unset 命令:刪除已存在的環(huán)境變量。
在子shell中刪除的全局變量,在父進(jìn)程中還是可以照常使用全局變量。
PATH環(huán)境變量定義了用于進(jìn)行命令和程序查找的目錄。
如果命令或程序的位置沒(méi)有包括在PATH變量中l(wèi)inux命令,那么shell是沒(méi)法找到的。
如果想要子shell找到該命令,需要將該命令的路徑添加到PATH中;
例如:path=$path:/etc/passwd -->路徑為絕對(duì)路徑
對(duì)于PATH變量的修改只能持續(xù)到退出或重啟系統(tǒng),這種效果不能一直持續(xù)。
/etc/profile 文件使系統(tǒng)上默認(rèn)的bash shell的主啟動(dòng)文件。系統(tǒng)上的每個(gè)用戶登錄時(shí)都會(huì)執(zhí)行這個(gè)啟動(dòng)文件。
例子:
使用unset刪除某個(gè)值:
說(shuō)明:當(dāng)unset 刪除數(shù)組中的數(shù)值時(shí),只是將數(shù)組中的某個(gè)數(shù)值刪除,置為空。