linux環境變數查詢與設定

2021-10-02 09:00:16 字數 3736 閱讀 3199

在bash shell中,環境變數分為兩類:全域性變數、區域性變數。

全域性環境變數對於shell會話和所有生成的子shell都是可見的。區域性變數只對建立他們的shell可見。

檢視全域性變數,使用env或printenv命令。如果要檢視某個環境變數的值,可以使用printenv命令,但是不可以使用env命令。

[root@localhost ~]# printenv home

/root

[root@localhost ~]#

第二種檢視方法是echo命令。但是檢視的變數前需要加上$美元符號。

[root@localhost ~]# echo $home

/root

[root@localhost ~]#

區域性環境變數只有在定義他們的程序中可見。linux系統預設定義了標準的區域性環境變數。如果自定義區域性變數,那麼這些變數被稱為使用者定義區域性變數。

linux中沒有特定的命令檢視區域性環境變數。set命令會顯示某個特定程序設定的所有環境變數,包括區域性變數、全域性變數、使用者自定義變數。

[root@localhost ~]# set
所有的環境變數名均使用大寫字母,這是bash shell的標準慣例。如果是你自己建立的區域性變數或是shell指令碼,請使用小寫字母。變數名區分大小寫。在涉及使用者定義的區域性變數時堅持使用小寫字母,這能夠避免重新定義系統環境變數可能帶來的災難。

定義區域性變數

一旦啟動了bash shell(或者執行乙個shell指令碼),就能建立在這個shell程序內可見的區域性變數了。可以通過等號給環境變數賦值,值可以是數值或字串。

設定了區域性環境變數後,就能在shell程序的任何地方使用它了。但是,如果生成了另外乙個shell,它在子shell中就不可用。

[root@localhost tmp]# echo $my_var   由於沒有my_var變數,列印空行

[root@localhost tmp]# my_var="hello" 設定my_var變數的值為hello,如果值沒有空格,可以省略雙引號

[root@localhost tmp]# echo $my_var 使用my_var變數,需要加上$作為引用,列印出來值

hello

[root@localhost tmp]#

定義全域性變數

在設定全域性環境變數的程序所建立的子程序中,該變數都是可見的。建立全域性環境變數的方法是先建立乙個區域性環境變數,然後再把它匯出到全域性環境中。這個過程通過 export 命令來完成,變數名前面不需要加 $ 。

[root@localhost tmp]# echo $my_var   由於沒有my_var變數,列印空行

[root@localhost tmp]# my_var="hello" 設定my_var變數的值為hello,如果值沒有空格,可以省略雙引號

[root@localhost tmp]# echo $my_var 使用my_var變數,需要加上$作為引用,列印出來值

hello

[root@localhost tmp]# export my_var 將區域性變數匯入到全域性變數中

[root@localhost tmp]# echo $my_var 列印該變數

hello

[root@localhost tmp]# bash 重新開啟乙個bash shell程序,測試是否可以訪問變數my_var

[root@localhost tmp]# echo $my_var 新的程序依舊可以訪問變數

hello

[root@localhost tmp]# exit 退出當前程序,返回上乙個程序

exit

[root@localhost tmp]# echo $my_var 原本的程序有也可以訪問。

hello

[root@localhost tmp]# printenv 列印全域性變數

# 其他全域性變數省略不顯示

my_var=hello world 剛才匯入的全域性變數已經顯示

_=/usr/bin/printenv

[root@localhost tmp]#

修改子shell中全域性環境變數並不會影響到父shell中該變數的值。

[root@localhost tmp]# echo $my_var   父shell的全域性變數值

hello world

[root@localhost tmp]# bash 開啟乙個子shell

[root@localhost tmp]# echo $my_var 列印子shell的變數值

hello world

[root@localhost tmp]# my_var="bash hello world" 重新設定子shell的變數值

[root@localhost tmp]# echo $my_var 重新列印子shell變數

bash hello world

[root@localhost tmp]# exit 退出子shell程序

exit

[root@localhost tmp]# echo $my_var 重新列印父shell程序

hello world

[root@localhost tmp]#

子shell甚至無法使用 export 命令改變父shell中全域性環境變數的值。儘管子shell重新定義並匯出了變數 my_variable ,但父shell中的 my_variable 變數依然保留著原先的值。所以linux中,子shell是無法操作父shell的環境變數。

當然,既然可以建立新的環境變數,自然也能刪除已經存在的環境變數。可以用 unset 命令完成這個操作。在 unset 命令中引用環境變數時,記住不要使用 $ 。

[root@localhost tmp]# echo $my_var    列印環境變數

hello world

[root@localhost tmp]# unset my_var 刪除my_var環境變數

[root@localhost tmp]# echo $my_var

[root@localhost tmp]#

在涉及環境變數名時,什麼時候該使用 $ ,什麼時候不該使用 $ ,實在讓人摸不著頭腦。

記住一點就行了:如果要用到變數,使用 $ ;如果要操作變數,不使用 $ 。這條規則的一

個例外就是使用 printenv 顯示某個變數的值。

在處理全域性環境變數時,事情就有點棘手了。如果你是在子程序中刪除了乙個全域性環境變數,

這只對子程序有效。該全域性環境變數在父程序中依然可用。所以,要刪除某個環境變數,需要父程序處理才可以。

遇到修改系統環境變數的問題。如果乙個變數已經很長,如果重新設定難免會出錯,所以linux提供了擴充套件的方法去修改變數。

[root@localhost tmp]# my_var="hello"  設定環境變數

[root@localhost tmp]# echo $my_var

hello

[root@localhost tmp]# my_var=$my_var" world" 環境變數擴充套件,新增world

[root@localhost tmp]# echo $my_var 重新列印

hello world

[root@localhost tmp]#

Linux環境變數查詢與設定

1 查詢 1.1 env 可以使用env命令查詢當前系統所有的環境變數 env1.2 set 使用set命令顯示所有本地定義的shell變數 5 2 設定 2.1 bashrc 2.1.1 使用範圍 ubuntu 2.1.2 新增方法 開啟上述檔案,然後在檔案尾部新增環境變數設定即可,例如 path...

Linux環境變數設定

1 直接用export命令 export path path 自定義路徑 檢視是否已經設好,可用命令export檢視 root localhost bin export path path 自定義路徑 2 修改profile檔案 vi etc profile 在裡面加入 export path pa...

Linux環境變數設定

linux環境變數設定 linux環境變數設定 1 引言 在 linux系統 command not found 的提示內容。如果每次都到安裝目標資料夾內,找到可執行檔案來進行操作就太繁瑣了。這涉及到環境變數 path 的設定問題,而 path 的設定也是在 linux 下定製環境變數的乙個組成部分...