Answers:
术语“用户区”可以在不同的上下文中指代许多事物,但是在这里,我将“ 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用户群之间至少在概念上有相似之处,但是极端情况肯定有所不同。
sed
在长输入线上遇到阻塞或grep
在二进制数据上出现段错误时,确实令人非常沮丧。