すべてのUnixコマンドはLinuxで書き直されましたか?


回答:


93

OSの2つの非常に異なる部分を混同しているようです。それらはしばしば互換的に参照されるので理解できますが、技術的に間違っているので、あなたの質問は間違った前提に基づいています。あなたがたぶん質問したい質問を完全に探索し、うまくいけば答えるために、短い歴史のレッスンが必要です。

最初に、UNIXがありました。基本的に、当時のUNIXはAT&T UNIXシステムを意味し最初に登場しました。しかし、AT&T UNIXは非フリーになったため、Richard StallmanはGNUプロジェクトを開始して、Freeの Unixシステムを作成しました。したがって、Gnuという名前はUnixではなく、GNUと略されます。GNUの計画は1983年に公開され、開発は1984年に始まりました

1990年代初頭までに、GNUはほとんどのUNIXユーティリティをゼロから再実装していました。 ウィキペディアには、書き換えられていないシステム全体のコンポーネントがいくつかリストされています(TeX、X Window System、およびMachマイクロカーネルは、書き換えられていないコンポーネントの例として言及されています)が、ほとんどの場合、ユーザーランドツールは、 AT&T(またはむしろ、非フリー)コードの再利用を回避し、コマンドラインオプションを追加して機能を拡張するという目標。その結果、GNUユーティリティは、元のインスピレーションを引き出したツールよりも定期的に強力でした。

その時点で、GNUには重要なコンポーネントが1つもありませんでした。オペレーティングシステムカーネルは、他のOSを実行していない実際のコンピューターですべてが連携できるようにします。1991年、Linus Torvaldsは、最終的にLinuxとして知られるようになる玩具プロジェクトに取り組み始めました。基本的には当時の新しい32ビットIntel 80386 CPUについて学ぶための学校プロジェクトであり、非常にシンプルなものから始まりましたが、最終的には実際に使用可能なオペレーティングシステムカーネルに変わり始めました。しかし、ユーザーランドソフトウェアはありませんでした。Linux自体には、シェル、カーネル初期化以外のシステム起動機能、テキストエディター、グラフィカルインターフェイス、何もありません。。カーネルは車のエンジンのようなものです。有用な車を作るために不可欠ですが、それ自体では役に立ちません(有用な車の場合、車輪、トランスミッション、ステアリング、運転者が座る場所、燃料タンクまたはその他のエネルギー貯蔵庫などが必要です)。Linuxカーネルは、最終的にGNUソフトウェアと同じ GNU General Public Licenseの下で配布されました。

それで、人々は2つを組み合わせ始めました。Unixに似たユーザーランドと、Unixのアイデアに基づいたカーネル(POSIXによく似ているものを含む)を入手し、必要なだけハッキングできるソースコードを完備し、費用はかかりません。 。特にLinuxディストリビューションが一般的になる前は、物事を機能させるのに少し手間がかかりましたが、ある程度の時間を費やそうとする人々がある程度使えるように十分に仕上げられました。

最近では、GNUは独自のカーネルを提供しています。おそらく聞いたことがないでしょうが、それはGNU Hurdと呼ばれています。しかし、Hurdは、Linuxが趣味や趣味の人の間で勢いを増し始めた1990年代初頭には存在しなかったため、開発者の間で最も注目されたのはLinuxカーネルとほとんどGNUユーザーランドの組み合わせでした。

また、最近では、多くのUnixシステムがGNUユーザーランドの一部をインストールするか、管理者が簡単にインストールできるようにします。他の非GNUシステムでは、GNU bash、GNU Compiler Collection、GNU Cライブラリ(バニラまたはパッチ済み)などが表示される場合があります。

さらに悪いことに、一部のシステムはLinuxカーネルを使用していますが、GNUユーザーランドはまったく使用していません。これの広く使用されている例については、Android OSを検討してください。AndroidOSは、基本的にカスタムユーザーランドと結合されたLinuxカーネルです。

これは、GNU、Linux、さまざまなUnixの間の境界を大幅に曖昧にするため、重要です(UNIX1つだけですが、多くのUnixと、さらに多くのUnixライクなOSがあります)。Linuxについて尋ねるとき、GNU / Linuxシステムについて尋ねることは非常に頻繁です。しかし、Debian GNU / kFreeBSDを検討してください。DebianGNU / kFreeBSDは、FreeBSDカーネルの上でGNUユーザーランドを実行し、Linuxをまったく使用していません。または、たとえばSolarisでは、coreutilsなどのさまざまなGNUパッケージを簡単にインストールできます。Mac OS XにもGNUユーザーランドの一部が付属していると思います。または、上記のAndroidを検討してください。

最終的に、使用可能なGNUシステムは非GNUコードを実行し、非GNUシステムはGNUコードを実行する可能性があります、GNUユーティリティには非GNUコードが含まれていません。


1
前回(何年も前)FreeBSDを使用しましたが、多くのGNUツールは使用しませんでしたが、GNU makeではなくBSD makeなどの独自のセットを使用しました。
reinierpost

5
@reinierpost OSXは非常によく似ています-プレーンインストールにはほとんどがBSDバージョンのものが含まれていますが、GNU coreutilsなどはMacPortsなどから簡単に入手できます。XCodeはLLVMを使用しますが、gccも使用します。複雑です:)
MattDMo

1
@reinierpost makeを置き換えるのはそれほど悪くありません。Cコンパイラは、もう少し複雑です。少なくともFreeBSD 8.0はデフォルトコンパイラとしてGCCを使用しています。具体的にはバージョン4.2.1。新しいバージョンのベースシステムへの統合を妨げるという「ライセンスの問題」は、おそらくGPL2 +からGPL3 +への切り替えに関するものですが、私は確信を持っていないようです。
CVn

3
@ hunter2これまでの投票数に基づいて、それは必要ではなかったようです。;)私も完全な履歴を書くつもりはありませんでした。Minixは、Linuxがセルフホスティングになる前に、Linux開発およびブートストラップシステムとして重要な役割を果たしましたが、たとえば、Linux、GNU、および元のUNIXの関係にはほとんど影響を与えませんでした。
CVn

3
@ hunter2そのルートをたどるとしたら、UNIXが最初に登場しなかったことは間違いありません。しかし、質問に答えるために、これは十分に良い近​​似に見えました。一文の答えは、「基本的にLinuxシステムで見つけたTeXとXを除くすべてのUNIXがGNUの一部として書き直された」のようなものになりますが、答えが絶対よりも大幅に長くなったとしても、追加のコンテキストが価値を高めると思います必要な-そして答えはまだすべての詳細をカバーするのにはほど遠いです。
CVn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.