“export -p”和“env”命令有什么区别?

“export -p”和“env”命令有什么区别?

env显示所有环境变量的列表

$ env |wc -l
63

总环境变量 = 63

根据help export

-p   display a list of all exported variables and functions

$export -p |wc -l 
63

环境变量+函数行数=63,然后函数行数=0

set显示环境变量+shell变量+函数的列表

$set |wc -l
4772

然后仅显示变量(环境变量+shell变量)

$(set -o posix ;set)|wc -l
172

这意味着函数行数= 4772-172 而不是零,请向我解释发生了什么?

答案1

造成混淆的原因是export -p默认情况下只显示导出的变量declare -x), 不是功能

显示导出的功能declare -fx) 使用export

export -fp

另外需要澄清的是,通过计算行数来获取函数数量是完全错误的,因为函数定义跨越多行(即使在声明时在一行中定义,也会set在多行中显示它们)。

相关内容