BSD和GNU / Linux用户区之间的主要区别是什么?


38

我已经在Unix&Linux上阅读了很多有关BSD和GNU等的内容。但是,尽管经常提到BSD和GNU用户群,但我仍然不了解它们之间的实际差异。有人可以详细说明吗?

在回答时,请充分解释历史联系,并记住我还活得不够长,无法经历GNU / Linux并不是主流UNIX(OS X除外)的时代。


2
我在此处的命令行环境中发布了与OS X中GNU / Linux的差异列表:reddit.com/r/commandline/comments/4jydnw/…
nisetama

Answers:


28

术语“用户区”可以在不同的上下文中指代许多事物,但是在这里,我将“ GNU用户区”与“ BSD用户区”解释为发行版附带的默认的最小程序集。

主要的不同之处在于,这两个用户区以完全不同的源代码开头。GNU cat源代码 NetBSD cat源代码。仅从该概念简单程序中,您就可以看到NetBSD的猫使用了传统的单字母命令行标志。GNU程序倾向于具有单字母标志,但也具有--something-long类型选项。GNU程序也倾向于POSIX兼容性。

在某些情况下,源代码中的差异将使两个用户区具有不同的行为。

看起来NetBSD(至少)使用了自己的标准C库libc版本。我在这里烦恼不已,但是libc和动态链接却是相互关联的。同样,不同的源代码将导致不同的行为。

我认为,作为shell用户,您会发现它的ps行为有所不同,并且ls可能会给您带来与以往略有不同的输出。如果使用--long-option命令行标志的类型,则必须为某些程序找到等效的命令行标志。

从历史上看,我的理解是BSD用户域更直接地从V6和V7 Bell Labs Unix通过32V端口连接到VAX硬件。GNU用户群是较新的,至少在某种程度上是为响应AT&T在80年代初将代码保持严密保护的秘密而做出的。1983年贝尔系统剥离后,AT&T试图通过Unix“货币化”。其中的一部分是以一种阻止大多数人看到的方式对源代码进行许可。理查德·斯托曼(Richard Stallman)和其他人对此有疑问。他们的GNU专为创建可自由共享的类Unix系统而存在。

同时,到1993年,AT&T通过BSD(加利福尼亚大学所在的伯克利)起诉了加利福尼亚大学系统。伯克利的人们已经用新代码替换了AT&T的所有原始源代码,并且该新代码至少成为NetBSD用户领域的始祖。AT&T和UCB于1994年达成和解,并于2004年向公众披露

自然地,至少想法是相互授粉的,因此GNU和BSD用户群之间至少在概念上有相似之处,但是极端情况肯定有所不同。


1
您的两个链接都指向一个位置。

那么在实际的shell使用中就倾向于它吗?长长的旗帜和危急情况?
6

12
我的经验还在于,GNU更加重视可伸缩性。也许这也算作“拐角案例”,但是当您sed在长输入线上遇到阻塞或grep在二进制数据上出现段错误时,确实令人非常沮丧。
2012年

一个很大的不同是,GNU从来没有自己的内核,而BSD则基于自己的内核并在自己的内核上构建,该内核部分地广泛用于商业UNIX系统中。例如,MAC OS X使用Darwin作为基于BSK的内核。
视觉化2013年

@visualication有GNU HURD,但尚未发布
Dmitry Kudriavtsev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.