linux——環境變數之export
阿新 • • 發佈:2019-01-07
Linux環境變數之export詳解
linux中經常會配置環境變數的值,其中在配置有些環境變數的值之前會加export, 有些則不會,尤其在.bashrc .profile /etc/bash.bashrc中配置使用者或者系統的環境變數時會產生一定的疑問。
歸根結底,使用export與否,取決於希望該變數的作用域,使用export的話,則其作用域在當前shell啟動的所有程式中,不使用則僅僅作用於當前shell,並不能作用於子程序中。
example_1:
非.bashrc .profile /etc/bash.bashrc中設定環境變數時:
[email protected]:~$ VAL_TS='hello' #定義非export變數 VAL_TS
[email protected]:~$ echo $VAL_TS #輸出變數 VAL_TS 的值
#結果
hello
[email protected]:~$ echo 'echo "val is :" $VAL_TS' > test.sh #新增指令碼語句到 test.sh
[email protected]:~$ ./test.sh #執行指令碼 test.sh
#結果
val is : #解析不到VAL_TS變數的值
[email protected]:~$ export EX_VAL_TS='world' #定義export變數 EX_VAL_TS
[email protected] :~$ echo $EX_VAL_TS #輸出變數 EX_VAL_TS
#結果
world
[email protected]:~$ echo 'echo "export val is :" $EX_VAL_TS' >> test.sh #新增指令碼語句到 test.sh
[email protected]:~$ ./test.sh #執行指令碼 test.sh
#結果
val is :
export val is : world #可以解析到變數EX_VAL_TS的值
example_2:
當在~/.bashrc中添加當前使用者的環境變數時,非export變數的作用域僅為當前使用者的所有互動式shell, 而不會作用域非互動式shell。
[email protected]:~$ echo 'VAL_TS="hello, no export"' >> ~/.bashrc #新增非export變數賦值到.bashrc
[email protected]:~$ source ~/.bashrc #使.bashrc生效
[email protected]:~$ echo $VAL_TS #輸出變數 VAL_TS 值
#結果
hello, no export
[email protected]:~$ echo 'echo "val is :" $VAL_TS' > test.sh #新增指令碼語句到指令碼 test.sh
[email protected]:~$ ./test.sh #執行指令碼 test.sh
#結果
val is : #指令碼中並沒有變數值
[email protected]:~$ echo 'export EX_VAL_TS="hello, export"' >> ~/.bashrc #新增export變數賦值
[email protected]:~$ source ~/.bashrc #使.bashrc生效
[email protected]:~$ echo $EX_VAL_TS #輸出變數 EX_VAL_TS 值
#結果
hello, export
[email protected]:~$ echo 'echo "export val is :$EX_VAL_TS' >> test.sh #新增指令碼語句到指令碼
[email protected]:~$ ./test.sh #執行指令碼 test.sh
#結果
export val is :hello, export #指令碼中獲取到了變數值
總結:
export決定了環境變數的作用範圍,顯式的export作用的都是互動式shell,而在非互動式shell中如果需要用到某個環境變數,則需要在其賦值時加字首 export