2014-11-02 134 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