回答:
「ユーザーランド」という用語は、さまざまなコンテキストの多くのものを指すことができますが、ここでは、「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のユーザーランドの間には少なくとも概念的な類似性がありますが、コーナーケースは間違いなく異なります。
sed
、長い入力行にチョークをかけたり、grep
バイナリデータにセグメンテーション違反を起こしたりすると、非常にイライラします。