本文主要介绍这几个命令在环境变量打印方面的差异。
printenv(1)
命令printenv用于打印所有或者部分环境变量。
但是,只能打印已经导出的Shell环境变量。
env(1)
命令env将仅显示已导出的环境变量列表,并且不会显示所有bash变量。
set
命令set是Shell中的一个内建命令,它能够显示当前Shell中的变量,已经用户自定义的变量,不管该变量有没有export。set命令允许你更改Shell选项的值并设置位置参数,或者显示Shell变量的名称和值。如果未提供任何选项或参数,则会设置显示所有Shell变量和函数的名称和值(按照当前语言环境排序),并且输出的格式可以重新用作设置或重置当前设置变量的输入。
最后总结
在我的Debian中,命令env(1)和printenv(1)的输出相同,唯一不同的地方是”_“环境变量(执行diff <(env) <(printenv)命令查看)。
总的来讲printenv(1)和env(1)在环境变量打印方面是类似的。但是在其他方面,比如功能上,env(1)主要用于设置环境变量并运行指定的命令命令,而printenv(1)是为了打印环境变量。
而set是一个Shell的内建命令,与Shell有关,用于设置Shell的属性。