env,declare和compgen -v有什么区别?

苏伦德拉·纳特

我看到了,printenvenv给出了相同的输出。当进一步挖掘以获取环境变量的完整列表时,我declare -xp这里找到和命令

compgen -v | while read line; do echo $line=${!line};done

这些命令在环境变量方面有何区别?

muru

env命令可以在修改后的环境中运行其他命令。如果没有给出命令,则env输出环境变量(即导出的变量)。printenv只能打印环境变量(它不能运行命令)。有关两者之间的更多区别,请参见此U&L问题

compgen -v仅输出所有shell变量的名称,无论是否导出。因此,您必须使用变量间接寻址(${!line})来获取变量的值。compgen -v通常用于制表符补全。

declare -p以可重用的方式打印shell变量的详细信息,通常以更多declare命令的形式-x选项将输出限制为导出的变量。的输出declare可以eval稍后返回,以获取给定的变量状态。

set可用于设置各种壳选项或位置参数。如果未提供任何参数或选项,则它将打印所有shell变量和函数

export可用于导出变量或函数。使用该-p选项,它将打印导出的变量和函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章