我看到了,printenv
并env
给出了相同的输出。当进一步挖掘以获取环境变量的完整列表时,我declare -xp
从这里找到和命令:
compgen -v | while read line; do echo $line=${!line};done
这些命令在环境变量方面有何区别?
该env
命令可以在修改后的环境中运行其他命令。如果没有给出命令,则env
输出环境变量(即导出的变量)。printenv
只能打印环境变量(它不能运行命令)。有关这两者之间的更多区别,请参见此U&L问题。
compgen -v
仅输出所有shell变量的名称,无论是否导出。因此,您必须使用变量间接寻址(${!line}
)来获取变量的值。compgen -v
通常用于制表符补全。
declare -p
以可重用的方式打印shell变量的详细信息,通常以更多declare
命令的形式。该-x
选项将输出限制为导出的变量。的输出declare
可以eval
稍后返回,以获取给定的变量状态。
set
可用于设置各种壳选项或位置参数。如果未提供任何参数或选项,则它将打印所有shell变量和函数。
export
可用于导出变量或函数。使用该-p
选项,它将打印导出的变量和函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句