標準構文とBSD構文の違いは何ですか?


21

「BSD構文」とその標準構文を受け入れる多くのコマンドを見てきました。ps一例を挙げてみましょう。

To see every process on the system using standard syntax:
      ps -e
      ps -ef
      ps -eF
      ps -ely

To see every process on the system using BSD syntax:
      ps ax
      ps axu

では、これら2つのルートの違いは何ですか?一般に、彼らがBSD構文で私が覚えておくべき要素を言うとき?この構文は、BSDにあるコマンドだけのものですか?


psoptargsを実装したシステムが時間の経過とともにどのように歴史的な違いを調べるかは、奈落の底の端に立つことでした。

回答:


18

MS OfficeとLibreOfficeの違いは何ですか?FirefoxとChromeの間?
彼らはほぼ同じことをしますが、彼らはわずかに異なる目的を持つ異なる人々によるものです。

おそらく、BSD、Linux、OSX、およびUnixディストリビューションが多くのコマンドを共有しいるのは、より良い質問でしょうか?これは、POSIX準拠に要約されます。POSIXは、基本的にUnixライクなオペレーティングシステムの標準セットです。コアAPI、コマンド、およびそれらのコマンドの動作方法を規定しています。

ps(POSIXで規定されたコマンド)の場合、特定の引数が必要です。これらには、これらのBSDのものが含まれます。すべてのPOSIX派生コマンドには独自のマニュアルページがありますが、個別のインストールが必要です。のためにps

sudo apt-get install manpages-posix
man 1posix ps

では、なぜBSDは私たちを使用していないのpsですか(またはその逆)?

  • 私たちのpsパッケージは、(procps参照:dpkg -S $(which ps)フォークで別のprocpsパッケージ。どちらもGPLライセンスです。これはBSDのライセンスと互換性がないため、そこに含めることはできません。(BSD 含めることはできますが、含める必要はありません)。
  • psかなりカーネル固有です。技術的に互換性がないと思います。

他のアプリケーションはどうですか?

POSIX準拠のコマンドのほとんどは、Ubuntuのcoreutilsパッケージから取得されます。このパッケージは、GNU / LinuxのGNUを表し、GPLライセンスも取得しています。BSDには、POSIXに準拠した独自のBSD互換ライセンスバージョンが付属していますが、GNUのバージョンと必ずしも完全に同じではありません。

psGNUではない唯一のPOSIXコマンドではありません。それらの負荷があります。

私が先導するように、なぜ彼らはそうあるべきですか?彼らは、非常に長い時間をかけてさまざまな人々によっています。それがここでの短い答えです。


20

この日は、多少の曲がりくねった歴史にバックアップのUNIX(ウィキペディアは持っている簡略図で、遠く から完全に)。特に、しばらくの間、AT&Tが開発したSystem Vとカリフォルニア大学バークレー校で開発されたBSDという 2つの主要な流れがありました。これは、Linux(1991)、Ubuntu(2004)よりもずっと前の1980年代初頭頃でした。多くの場合、これら2つの電流は異なる決定を下し、今日でも「System V」および「BSD」のバリアントまたは機能への参照が時々見られます。

このpsコマンドは、Unixの最初のリリースの1つから遡ります(バージョン1ではありませんでした。オンラインで最初に見つかったマニュアルページは、1974年のバージョン5(p.94)からです)。当時はps、たとえばps aユーザーの代わりにすべてのプロセスps xを表示し、端末が接続されていないプロセスを表示するなど、いくつかのオプションがありました。オプションは次の文字-で始まらないことに注意してください。当時、-オプションに使用する規則は今日のようにほぼ体系的ではなく、通常はファイル名を通常の引数として使用するコマンドのものでした。

時間の経過とともに、Unixのさまざまな要素がpsさらに多くのオプションで拡張されました。BSDバリアントは、先頭-にを付けずに元の構文を保持することを選択しax現在も存在しています。System Vバリアントは-、オプションの構文規則を採用することを選択し、異なる文字を使用しました(たとえばps -e、すべてのプロセスを表示するため)。Oracle(以前のSun)SolarisはSystem Vバリアントの例です(Solaris psにはPATH、BSDを念頭に置いて作成されたアプリケーション用に、デフォルトではないディレクトリに別個の実行可能ファイルも付属しています)。

Linuxが登場した時点で、Linuxを使用した人々は、多くの場合、あるUnixバリアントの経験がありました。Linuxは、技術的な考慮事項に基づいて、または機能を実装した人の経験と好みに基づいて、System V方式、時にはBSD方式、時には独自の方式で処理を行いました。Linuxのpsコマンドは、BSDに似たオプションで始まりました。たとえばps ae、すべてのプロセスを表示し、リストに環境変数を含めます。時間が経つにつれて、Linuxののの著者(1990年代後半に、私は正確にいつ覚えていない)ps、今日のいずれかのシステムV.そうするために使用された人々のための追加オプションps axまたはps -eLinuxですべてのプロセスを一覧表示されますが、さらには環境変数があります(PS_PERSONALITY)するps 古いスクリプトや習慣のある人々のために、さまざまなUnixの古いUnixの亜種のように振る舞います。

いくつかのUnixバリアントを使用した人々は、あるUnixバリアントから別のバリアントに切り替えるときに、プログラムとその習慣を変更する必要があることを好まなかった。そのため、機能のサブセットを標準化する努力がありました。これがPOSIX標準(IEEEが主導)につながりました。これは、Ubuntu 全般に準拠しています。psコマンドを含む範囲を持つ最初の版は1992年に発表されました。これはオンラインでは入手できませんが、1997年版は入手可能です。psコマンドについては、他の多くの場合と同様に、POSIXはSystem Vの方法を採用しました。

psコマンドの標準構文は、System VとPOSIXの両方と互換性のあるものです。さらに、この構文は-デフォルトでオプションを導入するために使用されるため、標準構文と言えます。一部のオプションは、2つの構文のいずれかにのみ存在します。幸いなことに、同じ呼び出しでそれらを混在させることができます。

一般的に言えば、「BSD」と「System V」には技術的な意味はありません。「BSD」は1980年代以降にBSDが行った選択であり、「System V」はAT&Tとそのパートナー(特にSun)が行った選択です。「POSIX」は、IEEE標準化委員会が行った選択です。


2

参照している「標準」構文は、実際には1980年代に開発されたGNUオペレーティングシステムです。GNUベースのユーティリティと哲学をLinuxカーネルと組み合わせて、最新のLinuxディストリビューション(Ubuntuを含む)を開発しました。

BSDオペレーティングシステムは、1970年代後半にGNUから独立して開発され、後にFreeBSDやOpenBSDなどの現代バージョンに分岐しました。

GNUとBSDはどちらもUnixに触発されており、わずかに異なる哲学、構文などを持っています。


0

Ubuntuのcoreutilsは、GNUで管理されたアプリケーションのコレクションであり、あらゆるものを含んでいます(apt-cache show coreutilsをご覧ください)。BSDには独自のバージョンがあります(GNUはBSDライセンスと互換性がありません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.