Linux

如何列印明顯隱藏的環境變數?

  • September 17, 2018

環境變數可以用env; 但是,有些沒有顯示。例如…

echo $EUID可能會產生結果,1000env | 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

$ zsh -c 'typeset -p EUID'
typeset -i10 EUID=1000

即 ( i) 表示整數,( 10) 表示以 10 為底(十進制)。

反而:

重擊

$ bash -c 'declare -p PATH'
declare -x PATH="…"

zsh

$ zsh -c 'typeset -p PATH'
export PATH=…

引用自:https://unix.stackexchange.com/questions/68232