2014-11-02 140 views
1

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

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

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

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

回答

5

UNIX对于一个操作系统家族来说是一个松散的术语,但最初的UNIX是由贝尔实验室的Dennis Ritchie和Ken Thompson编写的,作为旧版本称为Multics的更好的版本。 BSD(伯克利软件发行版)是由伯克利加州大学伯克利分校原始代码开发的UNIX版本。其他几个衍生产品来自BSD,特别是FreeBSD,OpenBSD和NetBSD。 GNU(GNU的非Unix)最初是由Richard Stallman和自由软件基金会的其他人尝试完全重写UNIX。他们成功地重写了大部分的用户空间工具,但他们的内核(赫德)有一些问题。与此同时,作为一名学生,Linus Torvalds决定编写自己的UNIX式操作系统,因为他无法承受真实的事情。由此产生的内核Linux开始与所有的GNU用户空间工具一起使用,从而形成像今天流行的Ubuntu这样的GNU/Linux发行版。 OS X是史蒂夫乔布斯以前的公司NeXT向苹果公司提供的brough,并且是使用BSD中的一个内核构建的,这个内核名为Mach,偶尔也是GNU Hurd的基础。

由于所有的东西都是如此连接,所以它们在很多方面看起来都很相似。有一个叫POSIX的标准,试图使他们的相似性正式。这包括一个具有特定功能的C编程环境,以及一组命令行工具(如cat,make等)。 POSIX是确定常见问题的良好开端。

我还没有在OS X上做过多的工作,但我认为C编译器,构建工具(make)和POSIX C库应该允许用C编写跨UNIX类系统的可移植代码。当然,会有微妙和烦人的分歧,但这是一个起点。在更高层次上,有很多程序(如IDE),它们都可以在Linux和OS X上运行。

+0

OSX没有gcc - 它具有clang而不是标准的兼容C编译器 – Mark 2014-11-02 14:38:15

+1

这是一个简单的unix树历史 http://upload.wikimedia.org/wikipedia/commons/c/cd/Unix_timeline.en.svg 来源:维基百科 – gengisdave 2014-11-02 14:42:12