1. 程式人生 > >linux——環境變數之export

linux——環境變數之export

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