Linux 和 BSD 中的常见程序(例如:“ls”、“cat”)是否来自相同的源代码?

use*_*875 25 linux source bsd

Linux 和 BSD 都有像lsandcatechoand 之类的通用程序kill

它们来自相同的源代码,还是 Linux 和 BSD 都拥有这些程序的独特源代码?

Jde*_*eBP 41

Linux 是一个内核。 它首先没有应用程序的代码。

基于Linux操作系统甚至不必彼此使用相同的源代码,更不用说与 BSD 上的相同代码了。有几个相当基本的程序的多种实现是众所周知的。

这些包括但不限于:

BSD 是操作系统。 它们确实包含这些程序的代码。然而,没有单一的 BSD 操作系统,这些程序的代码有时在 NetBSD、FreeBSD、OpenBSD 和 DragonFly BSD 之间有所不同。此外,它与用于几个基于 Linux 的操作系统的代码完全不同。

众所周知,Apple/NeXT 在 MacOS/NeXTSTEP 中使用 BSD 应用程序软件,但增强了几个程序以支持 ACL,其方式与(其他)BSD 的方式不同。例如,一种是使用chmod命令设置访问控制。所以这些命令的达尔文版本再次不同。

增加了三个曲折。

程序喜欢kill并且echo通常是 shell 内置程序。 因此,这些命令的代码根据您使用的外壳程序而不是操作系统而有所不同。

然后是 BusyBox 和 ToyBox,它们可用于基于 Linux 的操作系统和 BSD,甚至用作一些前者的此类命令的主要实现,它们有许多命令的自己的实现。

然后是 OpenSolaris,来自 Illumos 和 Schillix 之类的工具,以及所有这些工具的 Solaris 实现,这又是不同的。

这里有完整的历史,包括 BSD 和 AT&T Unix 之间的原始分裂,通过在 80 年代末和 1990 年代“PD”克隆许多 Unix 程序的努力,之后大约三年的洗牌,整个开源版本Solaris 的代码,以及 OpenBSD 对一些东西的重新实现。即使人们可能被误导的工具历史也有一种实现,例如cron(很多人错误地认为这是原始的 Unix 工具,或者错误地认为至少是一种单一的风格,cron由 Paul Vixie 在 1987 年写成“PD ” ,或者没有意识到从那以后的几年里其他人写的类似的替代品)是不平凡的。

  • 甚至还有 PacBSD,它是 Linux 内核上的 BSD 用户…… (2认同)
  • 像kill 和echo 这样的程序通常是shell 内置程序,确实如此,但当然有`/bin/` 实现POSIX 合规性,这些会因操作系统而异。Linux 上的 GNU 内容、BSD 和 Mac OS X 中的 BSD 版本。我不知道 AIX 或 HPUX 会使用什么,但可能是它们自己的实现。好的答案,+1 (2认同)

Pes*_*hke 12

Linux 和 BSD 中的这些程序是否相同?

简短的回答是:不一定。

常见的方案,如源代码lscatechokill,等依靠什么用户态他们来自何处。换句话说,您的系统使用的用户空间。与 Linux 内核一起使用的最常见的用户空间是 GNU - 因此名称为 GNU/Linux。然而,其他用户空间已与 Linux 内核集成。

BSD 通常有自己的用户空间,与 GNU 等其他用户区分开开发。甚至 BSD 本身也有不同的代码库。例如,FreeBSD 和 OpenBSD 都有一个“BSD 用户空间”,但是它们的代码库是不同的。如果您查看他们的手册页(ps例如),他们可以使用不同的参数。

开发POSIX 的原因之一是为了解决多个代码库的问题。如果随用户空间提供的通用实用程序符合 POSIX,则您可以确保它们(几乎)相同地工作,无论它们来自 GNU、FreeBSD、OpenBSD、AIX 还是其他基于 UNIX 的系统。

您可能知道,上面列出的用户域(AIX 除外)是开源的。随意浏览他们的代码存储库,您很快就会发现它们并不完全相同。

注意:尽管 GNU/Linux 是最流行的,但过去也有人尝试将 GNU 用户空间与 FreeBSD/NetBSD 内核一起使用。您可以在 wikipedia 上阅读更多关于它们的信息


归档时间:

查看次数:

4260 次

最近记录:

6 年,6 月 前