linux 環境變數詳解

2021-08-28 22:39:44 字數 3270 閱讀 3807

全域性環境變數:對於shell會話和它生成的所有子shell都是可見的。

區域性環境變數:只在建立他們的shell中可見。

全域性和區域性變數是否可以用我們程式語言中的父類和子類來幫助了解?

檢視全域性變數的值

(1)printenv:檢視所有全域性變數的值,printenv 變數名:檢視指定變數名的全域性變數的值

(2)env:只能檢視所有,不能檢視單個

(3)echo $變數名:只能檢視單個

[danni@vm-***-18 develop]$ echo $home

/home/danni

[danni@vm-***-18 develop]$ env home

env: home: no such file or directory

[danni@vm-***-18 develop]$ printenv home

/home/danni

set命令:顯示某個特定程序設定的所有環境變數,包括區域性變數、全域性變數、使用者自定義變數。由於沒有乙個命令可以只顯示區域性換將變數的命令,因此可以使用set進行檢視。

set、printenv、env的區別?

set:顯示出全域性變數、區域性變數、使用者自定義變數。還會按照字母順序對結果進行排序

env和printenv:只輸出全域性變數,並且不會對輸出結果進行排序

所有的環境變數名均使用大寫字母。如果是自己建立的區域性變數或是shell指令碼,則使用小寫字母。這樣可以避免重新定義系統環境變數可能帶來的災難

全域性變數可用於程序的所有子shell,當時用bash生成乙個子shell後,顯示了home環境變數的當前值,這個值和父shell中一模一樣。

但是在子shell中定義了使用者自定義變數my_variable變數(變數名、等號、值之間沒有空格),並給他賦值為"zi shell"(這裡注意一定要用引號括起來否則shell會認為空格之後的詞是另乙個要執行的命令),可以發現,在父shell中是看不到的。

[danni@vm-***-18 develop]$ echo $my_variable

[danni@vm-***-18 develop]$ echo $home

/home/danni

[danni@vm-***-18 develop]$ bash

[danni@vm-***-18 develop]$ echo $my_variable

[danni@vm-***-18 develop]$ my_variable="zi shell"

[danni@vm-***-18 develop]$ echo $my_variable

zi shell

[danni@vm-***-18 develop]$ echo $home

/home/danni

[danni@vm-***-18 develop]$ exit

exit

[danni@vm-***-18 develop]$ echo $my_variable

可以建立乙個區域性環境變數,在通過export把它匯出到全域性環境中

我們定義了乙個my_globalvariable區域性環境變數,然後通過bash命令啟動了乙個子shell,可以發現在子shell中無法訪問父shell中的這個區域性環境變數。

然後在父shell中通過export 命令之後,可以發現,在新建的子shell中也可以訪問此變數。

然後我們在子shell中修改了這個變數,可以發現在父類中檢視發現父類中的shell並沒有變,即這種改變只在子shell值有效,並不會影響父shell中的值,是不是跟父類子類很像?!。

即使我們在子shell 中執行了export也不會改變父shell中全域性環境變數的值。

[danni@vm-***-18 develop]$ my_globalvariable="i am global"

[danni@vm-***-18 develop]$ echo $my_globalvariable

i am global

[danni@vm-***-18 develop]$ bash

[danni@vm-***-18 develop]$ echo $my_globalvariable

[danni@vm-***-18 develop]$ exit

exit

[danni@vm-***-18 develop]

[danni@vm-***-18 develop]

[danni@vm-***-18 develop]$ export my_globalvariable

[danni@vm-***-18 develop]$ bash

[danni@vm-***-18 develop]$ echo $my_globalvariable

i am global

[danni@vm-***-18 develop]$ my_globalvariable="i am global,but change in son shell"

[danni@vm-***-18 develop]$ echo $my_globalvariable

i am global,but change in son shell

[danni@vm-***-18 develop]$ export my_globalvariable

[danni@vm-***-18 develop]$ exit

exit

[danni@vm-***-18 develop]$ echo $my_globalvariable

i am global

使用unset刪除已經存在的環境變數

在子程序中刪除了乙個全域性環境變數,只對子程序有效,在父程序中,這個全域性環境變數仍然可用。

[danni@vm-***-18 develop]$ echo $my_globalvariable

i am global

[danni@vm-***-18 develop]$ unset my_globalvariable

[danni@vm-***-18 develop]$ echo $my_globalvariable

linux 環境變數詳解

1 總結背景 2 變數簡介 linux 是乙個多使用者的作業系統 每個使用者登入系統後,都會有乙個專用的執行環境。通常每個使用者預設的環境都是相同的,這個預設環境實際上就是一組環境變數的定義。使用者可以對自己的執行環境進行定製,其方法就是修改相應的系統環境變數。3 定製環境變數 環境變數是和 she...

Linux環境變數詳解

環境變數的本質就是變數,它的服務物件是shell程式,它分為區域性環境變數和全域性環境變數,分別有不同的作用域和自然生命週期 不同的情況下,會產生不同的shell。既然環境變數是服務於shell程式的,那麼就來分析一下不同角色的shell 使用export匯出的環境變數,就是全域性環境變數 在 et...

Linux 環境變數詳解

定義 用於儲存系統執行環境引數的變數 作用 使系統的引數配置更加靈活,可以通過環境變數向程序傳遞引數,環境變數通常具有某些特殊用途,還有在系統當中通常具有全域性特性。環境變數字串都是name value這樣的形式,大多數name由大寫字母加下劃線組成,一般把name的部分叫做環境變數,value的部...