如何打印明显隐藏的环境变量?

如何打印明显隐藏的环境变量?

环境变量可以用env; 显示,但有些变量未显示。例如...

echo $EUID可能会产生结果,1000env | grep EUID不会产生任何结果。

这种类型的变量是什么?只读环境变量?

所有 shell 是否都按照某种约定设置相同的变量?

如何列出这些隐藏变量呢?

答案1

set命令显示所有变量(和函数),而不仅仅是导出的变量,因此

set | grep EUID

将显示您所需的值。此命令应显示所有未导出的变量:

comm -23 <(set | grep '^[^=[:space:]]\+=' | sort) <(env | sort)

答案2

没有环境变量。
所有内容都打印有envprintenv

您所做的是打印变量的值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=…

相关内容