关于「printenv(1)」「env(1)」「set」之间的差异

  CREATED BY JENKINSBOT

本文主要介绍这几个命令在环境变量打印方面的差异。

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的属性。