BSDとGNU / Linuxユーザーランドの主な違いは何ですか?


38

UnixとLinuxでBSDやGNUなどについて多くのことを読みました。しかし、BSDとGNUユーザーランドの実際の実際の違いが何であるかはまだよくわかりません。誰かが詳しく説明できますか?

答えるときは、GNU / Linuxが主流のUNIX(OS Xを除く)でなかった時代を経験するほど長く生きていなかったことに留意して、歴史的なつながりを十分に説明してください。


2
OS XのGNU / Linuxとの違いのリストを、コマンドライン環境のreddit.com/r/commandline/comments/4jydnw/…に投稿しました
ニセタマ

回答:


28

「ユーザーランド」という用語は、さまざまなコンテキストの多くのものを指すことができますが、ここでは、「GNUユーザーランド」対「BSDユーザーランド」を、ディストリビューションに付属するプログラムの最小セットとして解釈します。

大きな主な違いは、2つのユーザーランドが完全に異なるソースコードで始まることです。GNU catソースコード NetBSD catソースコード。そのコンセプトのシンプルなプログラムから、NetBSDの猫は伝統的な1文字のコマンドラインフラグを使用していることがわかります。GNUプログラムには、1文字のフラグだけでなく、--something-longタイプオプションも含まれる傾向があります。また、GNUプログラムはPOSIX互換性を重視しています。

ソースコードのその違いは、2つのユーザーランドに異なる動作を与える場合があります。

また、NetBSDは(少なくとも)標準Cライブラリであるlibcの独自バージョンを使用しているようです。私はここで頭を悩ませていますが、libcと動的リンクは奇妙なことにinter = relatedです。繰り返しますが、異なるソースコードは異なる動作につながります。

シェルユーザーとしては、それpsが異なる動作をすることに気付くと思いlsます。また、以前とは少し異なる出力が得られるかもしれません。コマンドラインフラグの--long-optionタイプを使用する場合、一部のプログラムでは同等のコマンドラインフラグを見つける必要があります。

歴史的に、私の理解では、BSDユーザーランドは、VAXハードウェアへの32Vポートを介して、V6およびV7 Bell Labs Unixからより直接的に派生します。GNUユーザーランドはより新しく、少なくとも80年代初期にコードを厳重に守られた秘密にしようとするAT&Tの試みに対応して書かれました。1983年のベルシステムの売却後、AT&TはUnixを「収益化」しようとしました。その一部は、ほとんどの人が見られないようにソースコードをライセンスすることでした。リチャード・ストールマンなどはこれに問題を抱えていました。彼らのGNUプロジェクトは、自由に共有可能なUnixライクなシステムを作成するために特別に存在していました。

その間、1993年までに、AT&TはBSD(「B」はカリフォルニア大学のあるバークレー)システムを介してカリフォルニア大学システムを訴えました。Berkeleyの人々はAT&Tの元のソースをすべて新しいコードに置き換え、その新しいコードは少なくともNetBSDのユーザーランドの祖先になりました。AT&TとUCBは、1994年に和解に来て明らかにした 2004年に公衆に。

当然のことながら、少なくともアイデアは相互に受粉するので、GNUとBSDのユーザーランドの間には少なくとも概念的な類似性がありますが、コーナーケースは間違いなく異なります。


1
両方のリンクは1つの場所を指します。

それは実際のシェルの使用に向いているのでしょうか?長い旗とコーナーケース?
-strugee

12
私の経験では、GNUはスケーラビリティをより重視しています。多分それは「コーナーケース」としてもカウントされますがsed、長い入力行にチョークをかけたり、grepバイナリデータにセグメンテーション違反を起こしたりすると、非常にイライラします。
トリプリー

大きな違いの1つは、GNUが独自のカーネルを持たず、BSDが独自のカーネルに基づいて構築されていることです。MAC OS Xは、たとえばBSKベースのカーネルとしてDarwinを使用します。
視覚化

@visualicationそこGNU HURDだが、それはまだリリースされていないです
ドミトリーKudriavtsev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.