Linux
如何列印明顯隱藏的環境變數?
環境變數可以用
env
; 但是,有些沒有顯示。例如…
echo $EUID
可能會產生結果,1000
但env | grep EUID
不會產生結果。這種類型的變數是什麼?只讀環境變數?
所有的 shell 都按照某種約定設置相同的變數嗎?
如何列出這些隱藏變數?
該
set
命令顯示所有變數(和函式),而不僅僅是導出的變數,所以set | grep EUID
將向您顯示所需的值。此命令應顯示所有未導出的變數:
comm -23 <(set | grep '^[^=[:space:]]\+=' | sort) <(env | sort)
沒有隱藏的環境變數。所有都用或
列印。
env``printenv
您所做的是列印變數的值
EUID
,但該變數未導出。$ bash -c 'declare -p EUID' declare -ir EUID="1000"
即: (
i
) 表示整數, (r
) 表示只讀。但是,沒有(x
)用於導出。$ zsh -c 'typeset -p EUID' typeset -i10 EUID=1000
即 (
i
) 表示整數,(10
) 表示以 10 為底(十進制)。反而:
$ bash -c 'declare -p PATH' declare -x PATH="…"
$ zsh -c 'typeset -p PATH' export PATH=…