【问题标题】:gnu manpage, two versions of documentation on "env" commandgnu 手册页,关于“env”命令的两个版本的文档
【发布时间】:2017-07-21 08:12:14
【问题描述】:

我是 shell 编程新手,目前正在研究 ubuntu 上的 env 命令。

我正在检查GNU manpage 上的env 命令,env 上似乎有两个版本的文档

所以我只是想知道,为什么同一命令有两个版本?两者有什么区别?

我刚开始学习 shell,这让我很困惑。

【问题讨论】:

    标签: linux shell ubuntu gnu


    【解决方案1】:

    存在同一命令的不同版本并不罕见,例如在不同的操作系统上。在这种情况下,您已经找到了 POSIX env 和 coreutils env 的手册页。

    POSIX 是 Unix 风格操作系统应如何运行的联合规范。它包含许多接口,例如带有线程和时钟的实时库,带有标准库的C编程语言等等。在这种情况下,它指定了 env 命令应该如何表现的基线。

    coreutils 是一个 GNU 软件包,包含一组被视为操作系统“核心”的程序。在 GNU/Linux 等 GNU 系统上,这很可能是实现 env 命令的原因。它有自己的文档,因此它不依赖于像 POSIX 那样的单独文档,并记录与标准的任何扩展和差异。

    在这种情况下,GNU coreutils env 有几个 POSIX coreutils 中不存在的开关,例如取消设置特定变量和输出 NUL 分隔的列表。

    【讨论】:

    • 嗨 Yann,非常感谢您的回答。如果我错了,请纠正我,但从你所说的来看,我的理解是 POSIX env 就像一个基线,包含 env 应该执行的基本命令。 GNU env 就像一个具有附加功能的扩展,基于 POSIX env。我的理解正确吗?
    • 基本上是的。请特别注意,POSIX env 是一种规范,而不是一种实现;一个特定的 env 可能是 POSIX 兼容的,但没有一个单一的 env 是 the POSIX env。此外,这些工具通常早于 POSIX,因此它可能是根据实际情况编写的规范。
    • 是的,现在这很有意义。再次感谢您的帮助!真的很感激! :)
    【解决方案2】:

    一个手册页与您正在使用的 env shell 命令有关,另一个与 env 编程库有关,例如 env.h。

    【讨论】:

    • 这是一个学习时刻:名为env(1) 的手册页位于手册第1 部分,即用户命令。系统调用在第 2 节中,库函数在第 3 节中。一些头文件在第 7 节中记录。这些手册页都用于 env 命令。
    • 还有三个不同的第 3 节手册页,描述了各种语言的 env 调用,但 OP 的图片确实表明他指的是两个 env(1) 页面。
    • 是的,我没有注意这个例子中的问题,我指的是 env(1) 和 env(3)。两个 env(1) 页面之间的区别是,一个用于 POSIX 命令,一个用于 GNU 命令。 GNU 程序是您在 Linux 上可能拥有的程序,它们通常会为 POSIX 版本添加扩展。如果你想制作一个跨平台脚本,使用 POSIX 命令格式很重要,因为其他 Unix 操作系统可能没有安装 GNU 命令。
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多