什么是unix,BSD,Mac OS X,linux和GNU之间的关系?

时间:2014-11-02 13:50:20

标签: linux macos unix gnu bsd

我是unix和linux世界的新手。我想非常清楚我正在学习的东西和他们的背景。但我发现以下之间存在复杂的关系:unix,BSD,Mac OS X,linux和GNU?我只是无法弄清楚什么是什么,什么是基于什么。

如果有人能为我澄清所有这些事情之间的关系,我将不胜感激。

我的目标是学习如何使用通用命令行工具在这些unix like或linux系统上进行编程。有人说Linux上的许多工具都与Mac OS X系统兼容。是什么让这些工具在这些系统上兼容?

我有一台Mac。我想知道系统的哪个部分或哪些工具在所有unix,unix系统和linux系统上都很常见。因此,如果我在Mac OS X上学习它,我可以将知识应用到其他系统。

1 个答案:

答案 0 :(得分:6)

对于一系列操作系统来说,UNIX是一个松散的术语,但最初的UNIX是由贝尔实验室的Dennis Ritchie和Ken Thompson编写的,它们是旧版Multics的更好版本。 BSD(Berkeley Software Distribution)是由加州大学伯克利分校的人员从最初的贝尔实验室代码开始开发的UNIX版本。其他一些衍生产品来自BSD,特别是FreeBSD,OpenBSD和NetBSD。 GNU(GNU'不是Unix)起源于Richard Stallman和自由软件基金会的其他人完全重写UNIX的尝试。他们成功地重写了大多数用户空间工具,但他们的内核(赫德)有一些问题。与此同时,作为一名学生,Linus Torvalds决定编写自己的类UNIX操作系统,因为他无法负担真实的东西。最终的内核Linux开始与所有GNU用户空间工具一起使用,从而产生了今天流行的Ubuntu等GNU / Linux发行版。 OS X从史蒂夫·乔布斯那里传到了苹果公司。以前的公司NeXT,是使用BSD围绕一个名为Mach的内核构建的,这也是GNU Hurd的基础。

由于所有事物都是如此联系在一起,因此它们在许多方面看起来都很相似。有一个名为POSIX的标准,试图使他们的相似性正式化。这包括具有某些功能的C编程环境,以及一组命令行工具(如cat,make等)。 POSIX是确定常见内容的良好起点。

我还没有在OS X上做过很多工作,但我认为C编译器,构建工具(make)和POSIX C库应该允许一个人在C语言中跨类UNIX系统进行编程。当然,会有微妙和恼人的差异,但这是一个起点。在更高级别,有许多程序(如IDE)可以为Linux和OS X提供版本。