LinuxとBSDの両方、ls
およびcat
などの共通プログラムがあります。echo
kill
同じソースコードから来たのですか、それともLinuxとBSDがそれぞれこれらのプログラムに固有のソースコードを持っていますか?
答え1
Linuxはカーネルです。 アプリケーションコードなしで起動します。
Linux- ベースオペレーティングシステムが必ずしも同じソースコードを使用するわけではありません。お互い、BSDと同じコードは言うまでもありません。かなり基本的ないくつかのプログラムにはいくつかの実装があることが知られています。
これには以下が含まれますが、これらに限定されません。
ifconfig
2つの実装があり、そのうちの1つは次のとおりです。GNU inetutilsもう一つが入っています。NET-3ネットワークツール。今は3つありますが、3つ目は私のものです。 (望むよりhttps://unix.stackexchange.com/a/504084/5132.)su
2つの実装があり、そのうちの1つは次のとおりです。ユーティリティLinuxもう一つが入っています。影。 Debian は 2018 年に 1 つから別のものに切り替え、この WWW サイトのいくつかの古い質問と回答に誤りをもたらしました。 (望むよりhttps://unix.stackexchange.com/a/460769/5132たとえば、su vs su - (Debian で): PATH はなぜ同じですか?".)- このコマンドを取得できる場所は数多くあります(実際にはDebian / Ubuntuでは4つ)
mailx
:GNU Mailutils、BSD mailx、NMH、およびs-nail。 (望むよりhttps://unix.stackexchange.com/a/489510/5132.)
BSDはオペレーティングシステムです。 それらするこれらのプログラムのコードが含まれています。ただし、単一のBSDオペレーティングシステムはなく、これらのプログラムのコードは、NetBSD、FreeBSD、OpenBSD、DragonFly BSDの間で異なります。また、複数のLinuxベースのオペレーティングシステムで使用されるコードとは明らかに異なります。
Apple / NeXTはMacOS / NeXTSTEPでBSDアプリケーションソフトウェアを使用していますが、(他の)BSDとは異なる方法でACLをサポートするように複数のプログラムを強化することが知られています。chmod
たとえば、コマンドを使用してアクセス制御を設定できます。したがって、これらのコマンドのダーウィンのバージョンは再び異なります。
3つの追加の紆余曲折があります。
kill
と同じプログラムはecho
通常シェルに組み込まれています。 したがって、これらのコマンドのコードは、オペレーティングシステムではなく、使用しているシェルによって異なります。
その後、BusyBoxとToyBoxがあり、どちらもLinuxベースのオペレーティングシステムとBSDで利用でき、独自の実装を持つ一部の電子では、これらのコマンドの主要な実装としても使用されます。たくさん注文する。
その後、IllumosやSchillixなどのツールを生成するOpenSolarisがありますが、どちらもSolarisで実装されています。
これには、1980年代後半から1990年代に多くのUnixプログラムを複製しようとする「PD」の努力と、それに伴う約30年間のシャッフルによる、オープンソースバージョン全体のBSDとAT&T Unixの間の元の分裂を含む完全な歴史があります。 SolarisコードとOpenBSDのいくつかの再実装。たとえば、人々がツールの歴史について誤解する可能性があるとしても、実装があります。たとえば、多くの人は、これが元のUnixツールであると誤って信じていたり、少なくとも1987年にPaul Vixieが書いたシングルスタイルであると誤って信じていますcron
。cron
「PD」)でマークしたり、他の人が同様の代替案を作成したことを認識していないことは、些細なことではありません。
答え2
このプログラムはLinuxとBSDで同じですか?
短い答えは次のとおりです。不要。
ls
、、cat
などecho
一般的なプログラムのソースコードはkill
何に依存していますか?ユーザーエリア彼らは出身です。つまり、システムはユーザー領域を使用します。 Linuxカーネルの最も一般的なユーザー領域はGNUです。したがって、GNU/Linux という名前が付けられました。ただし、他のユーザー領域はLinuxカーネルと統合されています。
BSDには通常、GNUなどの他のユーザー領域とは別に開発された独自のユーザー領域があります。 BSD自体もコードベースが異なります。たとえば、FreeBSD と OpenBSD の両方に「BSD ユーザー領域」がありますが、コードベースが異なります。そのマニュアルページ(例)を見ると、ps
使用できるさまざまなパラメータがあります。
理由POSIX開発の目的は、複数のコードベースの問題を解決することです。ユーザースペースに付属のユニバーサルユーティリティがPOSIX規格に準拠している場合は、GNU、FreeBSD、OpenBSD、AIX、または他のUNIXベースのシステムから来たものとほぼ同じ方法で動作することを確認できます。
ご存知のように、上記のユーザー領域(AIXを除く)はすべてオープンソースです。コードリポジトリを自由に探索すると、誰もが同じではないことがわかります。
注:GNU / Linuxが最も広く使用されていますが、過去にはFreeBSD / NetBSDカーネルでGNUユーザー領域を使用しようとしました。ウィキペディアでこれについての詳細を読むことができます。ここ。
答え3
答え4
上記の正解に加えて、(ほとんど?)すべてのLinuxディストリビューションのデフォルトシェルはbashであり、少なくともOpenBSDとFreeBSDのデフォルトシェルはbashではないことがわかります。私はcshかもしれないしkshかもしれませんが、BSDバリアントを使用してから数年が経過したので、私はわかりません。とにかくbashの機能はなく、前のコマンドを繰り返す方法さえ混乱しています。シェルの違いにより、より単純なコマンドのうち、シェル組み込みコマンドとスタンドアロンプログラムが変更される可能性があります。
現在、GNUユーザー領域にxBSDカーネルを提供する複数のディストリビューションがあり、その逆も可能なので、この質問に対する絶対に明確な答えはありません。システムに何があるかを知る唯一の確実な方法は、パッケージマネージャを使用してソースコードをダウンロードして確認することです。または、ディストリビューションにナビゲーション可能なソースコードがある場合は、オンラインで確認してください。ただし、そのライセンスを確認すると非常に有益です。良いガイドライン。