-
全局環(huán)境變量
全局環(huán)境變量對(duì)于shell會(huì)話和所有生成的子shell都是可見的。 局部變量則只對(duì)創(chuàng)建它們的shell可見。
要查看全局變量, 可以使用 env 或 printenv 命令。要顯示個(gè)別環(huán)境變量的值, 可以使用printenv 命令, 但是不要用env 命令。
-
也可以使用echo 顯示變量的值。 在這種情況下引用某個(gè)環(huán)境變量的時(shí)候, 必須在變量前面加上一個(gè)美元符( $ )
echo $HOME ls $HOME
-
局部環(huán)境變量
局部環(huán)境變量只能在定義它們的進(jìn)程中可見。- 在Linux系統(tǒng)并沒有一個(gè)只顯示局部環(huán)境變量的命令。
- set 命令會(huì)顯示為某個(gè)特定進(jìn)程設(shè)置的所有環(huán)境變量, 包括局部變量、 全局變量以及用戶定義變量。
-
設(shè)置用戶定義變量
-
設(shè)置局部用戶定義變量
my_variable=Hello echo $my_variable #設(shè)置了局部環(huán)境變量后, 就能在shell進(jìn)程的任何地方使用它了。 但是, 如果生成了另外一個(gè)shell, 它在子shell中就不可用。 bash echo $my_variable #空 exit echo $my_variable #Hello
-
設(shè)置全局環(huán)境變量
在設(shè)定全局環(huán)境變量的進(jìn)程所創(chuàng)建的子進(jìn)程中, 該變量都是可見的。 創(chuàng)建全局環(huán)境變量的方法是先創(chuàng)建一個(gè)局部環(huán)境變量, 然后再把它導(dǎo)出到全局環(huán)境中。
這個(gè)過(guò)程通過(guò)export 命令來(lái)完成, 變量名前面不需要加$ 。my_variable="I am Global now" export my_variable echo $my_variable # I am Global now bash echo $my_variable # I am Global now # 修改子shell中全局環(huán)境變量并不會(huì)影響到父shell中該變量的值。 bash my_variable="Null" echo $my_variable # Null exit echo $my_variable # I am Global now # 刪除環(huán)境變量 unset my_variable # 在處理全局環(huán)境變量時(shí), 事情就有點(diǎn)棘手了。 如果你是在子進(jìn)程中刪除了一個(gè)全局環(huán)境變量, 這只對(duì)子進(jìn)程有效。 該全局環(huán)境變量在父進(jìn)程中依然可用。 my_variable="I am Global now" bash unset my_variable exit echo $my_variable # I am Global now
-
-
設(shè)置PATH 環(huán)境變量
PATH=$PATH:/usr/local/nginx/sbin
-
定位系統(tǒng)環(huán)境變量
- 在你登入Linux系統(tǒng)啟動(dòng)一個(gè)bash shell時(shí), 默認(rèn)情況下bash會(huì)在幾個(gè)文件中查找命令。 這些文件叫作啟動(dòng)文件 或環(huán)境文件 。
- 啟動(dòng)bash shell有3種方式:
- 登錄時(shí)作為默認(rèn)登錄shell
- 作為非登錄shell的交互式shell
- 作為運(yùn)行腳本的非交互shell
- 當(dāng)你登錄Linux系統(tǒng)時(shí), bash shell會(huì)作為登錄shell啟動(dòng)。 登錄shell會(huì)從5個(gè)不同的啟動(dòng)文件里讀取命令:
-
/etc/profile
/etc/profile文件是bash shell默認(rèn)的的主啟動(dòng)文件。 只要你登錄了Linux系統(tǒng), bash就會(huì)執(zhí)行 /etc/profile 啟動(dòng)文件中的命令。這兩個(gè)發(fā)行版(Ubuntu和CentOS)的/etc/profile文件都用到了同一個(gè)特性: for 語(yǔ)句。 它用來(lái)迭代/etc/profile.d目錄下的所有文件。 這為L(zhǎng)inux系統(tǒng)提供了一個(gè)放置特定應(yīng)用程序啟動(dòng)文件的地方, 當(dāng)用戶登錄時(shí), shell會(huì)執(zhí)行這些文件。
-
$HOME目錄下的啟動(dòng)文件
剩下的啟動(dòng)文件都起著同一個(gè)作用: 提供一個(gè)用戶專屬的啟動(dòng)文件來(lái)定義該用戶所用到的環(huán)境變量。 大多數(shù)Linux發(fā)行版只用這四個(gè)啟動(dòng)文件中的一到兩個(gè):- $HOME/.bash_profile
- $HOME/.bashrc
- $HOME/.bash_login
- $HOME/.profile
-
-
環(huán)境變量持久化
- 現(xiàn)在你已經(jīng)了解了各種shell進(jìn)程以及對(duì)應(yīng)的環(huán)境文件, 找出永久性環(huán)境變量就容易多了。 也可以利用這些文件創(chuàng)建自己的永久性全局變量或局部變量。
- 最好是在/etc/profile.d目錄中創(chuàng)建一個(gè)以.sh結(jié)尾的文件。 把所有新的或修改過(guò)的全局環(huán)境變量設(shè)置放在這個(gè)文件中。
- 用source命令使其生效(否則需注銷重新登錄才能生效)
-
數(shù)組變量
要給某個(gè)環(huán)境變量設(shè)置多個(gè)值, 可以把值放在括號(hào)里, 值與值之間用空格分隔。mytest=(one two three four five) echo $mytest # one echo ${mytest[2]} #three echo ${mytest[*]} #one two three four five mytest[2]=seven #one two seven four five unset mytest[2] #one two four five echo ${mytest[2]} #空 echo ${mytest[3]} #four unset mytest
Linux命令行與Shell-----環(huán)境變量
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 說(shuō)明,本文所使用的機(jī)器是:SUSE Linux Enterprise。 問題定位 這看起來(lái)像是環(huán)境變量引起的問題,...
- 第一部分 Linux命令行 1. 基本的bash shell命令 1.1 啟動(dòng)shell /etc/passwd文...
- 該來(lái)的我 終究還是來(lái)了 !!! 在2016快跟我們 的時(shí)候?。?! 沒錯(cuò),我是小群子姐 一個(gè)在2016年墨水沒長(zhǎng)多少...