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