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
在多行中显示它们)。