终端命令的非 GNU 版本有哪些?

终端命令的非 GNU 版本有哪些?

我认为 GNU 是(唯一)其开源代码为 Linux 发行版提供支持的基本工具的供应商。然而,在浏览 unix.se 时,我看到一些问题明确指出它们正在处理 GNU ,例如有关解析 GNU 的安全性的问题ls。这一定意味着lsGNU 没有提供某些版本,对吗?这些版本是什么,谁制作的以及在哪里可以找到它们?

答案1

采用更直接的方法,以下是 GNU 实用程序之外的主要选项:

  • BSD 用户区实用程序:起源于 Berkely Unix 的早期版本,其中它们只是具有一些额外功能的常规 Unix 工具,到 SVR4 时,它们已经发生了显着差异。今天以各种形式使用自由BSD,开放BSD,网络BSD,蜻蜓BSD,迷你3(使用 NetBSD 用户区)和 macOS(使用 FreeBSD 用户区,进行一些修改),以及 PS3(FreeBSD 和 NetBSD 的复杂衍生品)、PS4(FreeBSD 的衍生品)上的系统软件,以及可能的PS5 和 PS Vita,以及相当有趣的奇美拉Linux
  • 忙碌盒:设计简约且大部分符合 POSIX 标准。使用者阿尔卑斯Linux默认情况下(因此在巨大的Docker 镜像的数量,因为 Alpine 是它们的流行基础),并被许多运行 Linux 的嵌入式系统用作专有用户区,包括绝大多数使用 Linux 作为操作系统的网络设备。从安装数量来看,这是类 UNIX 系统上排名前几的用户区之一,主要是由于嵌入式使用。
  • 玩具盒:与 Busybox 类似的概念,但更简约(并且在一些地方更符合 POSIX)。源于有关 busybox 的许可分歧。这就是 Android(实际上是 Linux)所使用的,但我不知道有任何其他 Linux 平台默认使用它。这是类 UNIX 系统上的其他顶级用户区之一,因为 Android到处
  • 传家宝项目:原始 UNIX 用户空间的最低限度的现代化副本,主要基于 Caldera 和 Sun 发布的源代码。这些主要是 SVR4 派生的,有趣的是许多命令同时提供“经典”版本和 POSIX 版本。据我所知,没有任何主要平台使用过。
  • 9基地: 提供的用户态实用程序的最小移植副本贝尔实验室的 Plan 9。据我所知,没有任何主要平台使用过。
  • 数据库乌巴什:一个更小、在某些情况下更简约但通常更符合 POSIX 标准的 busybox 替代品。据我所知,没有任何主要平台使用过。

答案2

我认为 GNU 是(唯一)其开源代码为 Linux 发行版提供支持的基本工具的供应商。

一点都不。 Stallman 和他的同事确实喜欢将这种情况描绘成“GNU/Linux 加上一些非 GNU 可选软件”,但事实并非如此。

这一定意味着 ls 的某些版本不是由 GNU 提供的,对吧?

嗯,从严格意义上来说,数学含义并不存在,但是是的,你是对的。

首先:所有非 Linux 系统也有可移植用户区,对吗? FreeBSD、OpenBSD、DragonflyBSD、Minix、MacOS……它们都不提供 GNU 工具。那么,有成为另一个工具王朝,至少是一个。

所以,是的,有 BSD 工具(当然有各种分支)。有些比 GNU 同类产品更酷,有些更差,有些只是不同。我不知道有哪个 Linux 发行版完全依赖 libbsd/BSD 工具,而其他发行版却有 gnulib/GNU coreutils,但至少我更喜欢 bsdtar,更喜欢与 GNU Bash 不同的 shell……你明白了。

然后,通过远的运行 Linux 的最实际的物理设备将不是有 GNU 用户区:

  • 超过36亿积极的Android 设备在那里。 Android 是一个 Linux 发行版,它使用toybox(0-BSD 许可)作为标准工具的集合,以及修改后的 Korn shell。
  • 有数十亿个 DSL/电缆/光纤“路由器/接入点”盒子运行某些 Linux 发行版。它们中的绝大多数都在 Busybox (GPL) 下运行,并使用它sh附带的。

与我猜测的大约 60 亿台带有非 GNU 基础工具集的 Linux 设备相比,我认为这几百万台台式机/笔记本电脑 Linux 并没有那么普遍。

但到目前为止,运行的大多数 Linux 内核实例可能都在 Hyperscaler 云提供商(亚马逊、阿里巴巴、微软、甲骨文……)的数据中心中运行。很难给出具体数字,但将达到数十亿。这些正在运行什么——很难猜测。但特别是对于云计算来说,像 Alpine Linux 这样的发行版很受欢迎,而且它不是随 GNU Coreutils 一起提供的,而是随 Busybox 一起提供的。但我们在这里数虚拟机, 不是物理机。正如我所说,在 Google 数据中心中,“设备”是服务器机架,而不是单个主板,物理设备的数量是比较小的。

(个人对此的看法:强 Copyleft 用户空间的比例越来越少,这并不是一件好事,特别是因为供应商确实没有停止侵犯内核的强 Copyleft 要求,并且没有 FSF 管理的代码对于然而,FSF 的 GPL 执行并没有像我希望的那样发挥作用、有针对性和效果。)

答案3

GNU Coreutils一般来说,这些工具中的大多数都不是原始版本。通常它们由操作系统提供,并且由于大多数 Linux 版本都是 GNU/Linux,因此您最熟悉的是 GNU Coreutils。然而,在 Linux 出现之前,就已经存在 BSD 工具和各种风格的 UNIX 工具,这些工具今天仍然存在于仍在使用的各种风格的 UNIX 上。另外,某些版本的 Linux 不是 GNU,可能使用类似的东西忙碌盒(例如 Alpine Linux)。

无论是谁制造的,重要的是他们遵循POSIX 标准,情况并非总是如此,尤其是对于 GNU 实用程序而言。

您可以找到几乎任何命令的 OpenBSD、FreeBSD、UNIX、GNU、Busybox 等版本。

许多正在使用的 UNICES 至少在某种程度上起源于 UNIX 版本 6,因此它们可能共享一些相同的实用程序,或者它们可能在此过程中对这些实用程序进行了独特的修改。

答案4

这一定意味着 ls 的某些版本不是由 GNU 提供的,对吧?这些版本是什么,谁制作的以及在哪里可以找到它们?

是的。最初的实现是ls在旧的 AT&T Unix 许可证下进行的。

至于 的现代实现ls,所有由各种 BSD 分发的实现(与 Linux 不同,它实际上源自原始的 AT&T Unix)。

您可能认为 BSD 是一个非常少数的操作系统,用户很少,但它们确实存在。还有一个拥有大量用户的 BSD 发行版:Apple 的 Mac OS。

值得记住的是 GNU 项目是什么。 GNU 是 GNU 而非 Unix。这是一个制作 Unix 工具(例如ls)的干净副本的项目,但绝对不是 Unix。因此,您可以将 GNU 视为lsUnix 原始ls.事实上,GNU 工具的功能已经激励其他开发人员使用 GNU 功能更新他们的工具。多年来,GNU 和 Unix 世界的其他部分之间进行了大量的异花授粉。

相关内容