【发布时间】:2017-07-21 08:12:14
【问题描述】:
我是 shell 编程新手,目前正在研究 ubuntu 上的 env 命令。
我正在检查GNU manpage 上的env 命令,env 上似乎有两个版本的文档
所以我只是想知道,为什么同一命令有两个版本?两者有什么区别?
我刚开始学习 shell,这让我很困惑。
【问题讨论】:
我是 shell 编程新手,目前正在研究 ubuntu 上的 env 命令。
我正在检查GNU manpage 上的env 命令,env 上似乎有两个版本的文档
所以我只是想知道,为什么同一命令有两个版本?两者有什么区别?
我刚开始学习 shell,这让我很困惑。
【问题讨论】:
存在同一命令的不同版本并不罕见,例如在不同的操作系统上。在这种情况下,您已经找到了 POSIX env 和 coreutils env 的手册页。
POSIX 是 Unix 风格操作系统应如何运行的联合规范。它包含许多接口,例如带有线程和时钟的实时库,带有标准库的C编程语言等等。在这种情况下,它指定了 env 命令应该如何表现的基线。
coreutils 是一个 GNU 软件包,包含一组被视为操作系统“核心”的程序。在 GNU/Linux 等 GNU 系统上,这很可能是实现 env 命令的原因。它有自己的文档,因此它不依赖于像 POSIX 那样的单独文档,并记录与标准的任何扩展和差异。
在这种情况下,GNU coreutils env 有几个 POSIX coreutils 中不存在的开关,例如取消设置特定变量和输出 NUL 分隔的列表。
【讨论】:
env 就像一个基线,包含 env 应该执行的基本命令。 GNU env 就像一个具有附加功能的扩展,基于 POSIX env。我的理解正确吗?
一个手册页与您正在使用的 env shell 命令有关,另一个与 env 编程库有关,例如 env.h。
【讨论】:
env(1) 的手册页位于手册第1 部分,即用户命令。系统调用在第 2 节中,库函数在第 3 节中。一些头文件在第 7 节中记录。这些手册页都用于 env 命令。