UnixとLinuxでBSDやGNUなどについてたくさん読んだことがありますが、BSDとGNUのユーザーランドが頻繁に言及されているにもかかわらず、実際の実際的な違いが何であるかはまだわかりません。誰かが詳しく説明できますか?
答えるときは、GNU / Linuxが主流のUNIX(OS Xを除く)ではなかった時代を経験するほど長く生きていなかったことを念頭に置いて、歴史的なつながりを十分に説明してください。
承認された回答:
「ユーザーランド」という用語は、さまざまな文脈で多くのことを指すことがありますが、ここでは、「GNUユーザーランド」と「BSDユーザーランド」を、ディストリビューションに付属するデフォルトの最小限のプログラムセットとして解釈します。
主な大きな違いは、2つのユーザーランドが完全に異なるソースコードで始まることです。 GNUcatソースコードNetBSDcatソースコード。そのシンプルなコンセプトのプログラムから、NetBSDの猫が従来の1文字のコマンドラインフラグを使用していることがわかります。 GNUプログラムは一文字のフラグを持っている傾向がありますが、--something-long
オプションを入力します。 GNUプログラムもPOSIX互換性の傾向があります。
ソースコードの違いにより、2つのユーザーランドの動作が異なる場合があります。
また、NetBSDは(少なくとも)独自のバージョンのlibc、標準Cライブラリを使用しているように見えます。ここで頭を悩ませていますが、libcとダイナミックリンクは奇妙なことに相互に関連しています。繰り返しになりますが、ソースコードが異なれば動作も異なります。
シェルユーザーとして、あなたはそのps
を見つけるだろうと思います 動作が異なり、ls
以前とは少し異なる出力が得られる場合があります。 --long-option
を使用する場合は、一部のプログラムで同等のコマンドラインフラグを見つける必要があります。 コマンドラインフラグの種類。
歴史的に、私の理解では、BSDユーザーランドはV6およびV7 Bell Labs Unixから、32Vポートを介してVAXハードウェアに直接派生しています。 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ユーザーランドの間には少なくとも概念的な類似性がありますが、コーナーケースは間違いなく異なります。