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

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

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