我偷偷學(xué)了這5個(gè)命令,打印Linux環(huán)境變量那叫一個(gè)“絲滑”!

一、概述
在基于 Linux 和 Unix 的系統(tǒng)中,環(huán)境變量是一組動態(tài)命名值,存儲在系統(tǒng)中,供在 shell 或子 shell 中啟動的應(yīng)用程序使用。簡單來說,環(huán)境變量是具有名稱和關(guān)聯(lián)值的變量。
KEY=value
KEY="NewVALUE"
KEY=valueA:valueB
在 Linux 中有多種方法可以列出或顯示環(huán)境變量,我們可以使用env、printenv、declare或set命令列出系統(tǒng)中的所有變量。
在本教程中,我們將給大家分享如何在 Linux 中列出環(huán)境變量。
二、環(huán)境變量必知的規(guī)則
環(huán)境變量遵循
<NAME>=<VALUE>
格式。等號=兩邊沒有空格
可以通過使用冒號分隔單個(gè)變量來指定多個(gè)值:``=::`
環(huán)境變量區(qū)分大小寫。
習(xí)慣上,環(huán)境變量名稱設(shè)置為大寫。
Shell 變量與環(huán)境變量不同。Shell 變量僅適用于當(dāng)前 shell,不適用于任何子進(jìn)程。
三、列出環(huán)境變量
3.1 printenv
printenv是最常用的顯示環(huán)境變量的命令,如果變量的名稱作為參數(shù)提供給命令,則僅顯示變量的值,printenv如果沒有給出參數(shù),則打印所有環(huán)境變量的列表,每行一個(gè)變量。
我們執(zhí)行命令看下效果。
printenv
執(zhí)行結(jié)果:

查看HOME環(huán)境變量的值:
printenv?HOME
執(zhí)行結(jié)果:

我們注意到HOME
是執(zhí)行printenv
命令后的變量:

所以我們想要查看什么參數(shù)的時(shí)候,直接printenv
后加上其變量即可。
比如:
printenv?USER
執(zhí)行結(jié)果:

那么這些參數(shù)到底是什么意思呢?我們選擇幾個(gè)常用的解釋一下。
USER:當(dāng)前登錄的用戶。
HOME:當(dāng)前用戶的主目錄。
EDITOR:用作默認(rèn)文件編輯器。
SHELL:當(dāng)前用戶的 shell 路徑,例如 bash 或 zsh。
LOGNAME:此處顯示當(dāng)前用戶的名稱。
PATH:運(yùn)行命令時(shí),這是要搜索的目錄列表。
LANG:區(qū)域設(shè)置的當(dāng)前設(shè)置。
TERM:當(dāng)前終端仿真。
MAIL:當(dāng)前用戶的郵件保存在此位置。
3.2 env
env命令效果和printenv
是一樣的,顯示的內(nèi)容也是完全一樣的:
env
執(zhí)行結(jié)果:

唯一區(qū)別的是過濾的參數(shù)不一樣,printenv是后面直接加變量名進(jìn)行過濾,但是env命令需要結(jié)合grep進(jìn)行過濾,舉個(gè)例子:
env?|?grep?HOME
執(zhí)行結(jié)果:

3.3 declare
declare命令顯示的是已經(jīng)聲明的環(huán)境變量:
declare
執(zhí)行結(jié)果:

這個(gè)時(shí)候我們怎么去過濾呢?
執(zhí)行以下命令即可:
export?-p?|?grep?HOME
執(zhí)行結(jié)果:

3.4 set
set命令看字面像是設(shè)置變量的,不過它確實(shí)可以顯示出系統(tǒng)的環(huán)境變量,注意set顯示當(dāng)前 shell 中所有 shell 變量的名稱和值:
set
執(zhí)行結(jié)果:

這里不止那么多,文章篇幅的原因,不全部截圖出來。
我們也可以結(jié)合grep
命令進(jìn)行過濾:
set?|?grep?HOME
執(zhí)行結(jié)果:

3.5 echo
echo命令后加$符號再加上變量也可以直接打印出環(huán)境變量:
echo?$HOME
執(zhí)行結(jié)果:

這個(gè)就比較簡單了,不過前提是你得知道有哪些變量。
總結(jié)
打印環(huán)境變量這個(gè)操作在運(yùn)維過程中經(jīng)常用到,本文列舉了5個(gè)常用的打印環(huán)境變量的命令,它們分別是printenv
、env
、declare
、set
、echo
,希望本文對您有所幫助,有任何問題,歡迎在下方評論區(qū)與我討論。