如何在Linux中查看系統(tǒng)環(huán)境變量
環(huán)境變量取決于某些特定的環(huán)境,是特定于當(dāng)前系統(tǒng)環(huán)境的變量,比如,當(dāng)前登錄的用戶存儲在 USER 變量中。
我們今天這篇文章將會介紹如何查看系統(tǒng)的環(huán)境變量。
什么是環(huán)境變量
環(huán)境變量與你的桌面環(huán)境無關(guān)。
Hostname 是我們遇到的最基本的環(huán)境變量之一,一般情況下它的拼寫字母是大寫的,為什么會這樣呢?
因為大多數(shù)環(huán)境變量都是由系統(tǒng)預(yù)定義的,并且是全局變量,所以它們通常都是用大寫字母書寫的。
那么,為什么首先要使用環(huán)境變量呢?
假設(shè)你是一名程序員,并且你的代碼需要訪問你的數(shù)據(jù)庫密鑰,該密鑰不應(yīng)公開共享。
那么,如果將代碼共享到 git 上的時候,應(yīng)該怎樣避免密碼泄露呢?一般的做法是,將數(shù)據(jù)庫密鑰封裝為環(huán)境變量。
通過這種方式,將git上的指令設(shè)置為“如果要使代碼正常運行,需要用數(shù)據(jù)庫密鑰來替換此變量”。
當(dāng)然,這是使用環(huán)境變量的一種方式,下面是Linux系統(tǒng)中常見的一些環(huán)境變量:
環(huán)境變量 | 描述 |
HOME | 顯示當(dāng)前用戶主目錄 |
HOSTNAME | 系統(tǒng)的主機名 |
UID | 存儲用戶的唯一ID |
SHELL | 顯示當(dāng)前正在使用的 shell 路徑 |
BASH_VERSION | 當(dāng)前使用的 bash 實例的版本 |
HISTFILE | 保存命令歷史記錄的文件路徑 |
TERM | 顯示正在使用的終端類型 |
PATH | 顯示已列分割的文件和目錄的路徑 |
打印環(huán)境變量
在 Linux 中有多種方法來打印環(huán)境變量,我們從最簡單的方式開始。
1、使用 printenv 命令
printenv 程序用于打印當(dāng)前 shell 的環(huán)境變量。
假如我們要使用 printenv 打印 USERNAME 變量的值,那么命令如下:
printenv
同樣,可以使用 printenv 打印多個環(huán)境變量,使用空格分割,比如,使用 printenv 打印 HOME 和 USERNAME 的值:
printenv
上述命令,首先會打印當(dāng)前登錄用戶的主目錄,然后第二行顯示主機名,如下圖所示:
那么,如何打印當(dāng)前 shell 中所有可用環(huán)境變量呢?只需要運行 printenv 命令即可:
printenv
2、使用 echo 命令
經(jīng)常使用 Linux 的用戶會比較習(xí)慣使用 echo 命令。比如,如下命令將會打印 USERNAME 的值:
echo $USERNAME
那么,使用 echo 命令打印多個環(huán)境變量該怎么做呢?使用如下語法:
echo -e "$<variable 1> \n<variable 2> \n<variable 3>"
比如,使用如下命令同時打印 HOME, USERNAME, HOSTNAME 的值:
echo -e "$USERNAME \n$HOME \n$HOSTNAME"
3、使用 env 命令
shell 腳本通常使用 env 命令啟動正確的解釋器,但我們也可以使用 env 指令列出可用的環(huán)境變量。
使用不帶任何參數(shù)的 env 命令,會打印所有可用的環(huán)境變量:
env
那么,如果想要獲取某個特定環(huán)境變量的值,需要怎樣做呢?可以使用 grep 來對結(jié)果進行過濾。下面我們演示如何打印 HOME的值:
env
4、使用 declare 命令
declare 命令用于聲明和打印shell中變量的值。與上面介紹的其他命令一樣,不帶任何參數(shù)的使用 declare 命令會打印出所有可用的環(huán)境變量:
declare
前面我們使用過grep過濾結(jié)果,其實,可以使用它來過濾多個結(jié)果,語法如下:
declare | grep '<variable 1>\|<variable 2>\|<variable 3>'
下面命令打印 HOSTNAME 和 USERNAME 的值:
declare | grep 'HOSTNAME\|USERNAME'
5、使用 set 命令
通常,set 命令用于在 shell 中設(shè)置或者取消設(shè)置配置項,以設(shè)置進程信息。除此以外,set 命令也可以用來打印當(dāng)前 shell 的環(huán)境變量。如下命令:
set
同樣可以使用 grep 來過濾 set 命令的結(jié)果。下面的例子展示如何使用 grep 命令打印多個環(huán)境變量:
set | grep 'HISTFILESIZE\|HISTFILE\|GNOME_SHELL_SESSION_MODE'
以上我們介紹了打印環(huán)境變量的多個方法,但是建議使用第一種方法,因為它的語法最簡單。