この日は、多少の曲がりくねった歴史にバックアップの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バリアントは、先頭-
にを付けずに元の構文を保持することを選択しa
、x
現在も存在しています。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 -e
Linuxですべてのプロセスを一覧表示されますが、さらには環境変数があります(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標準化委員会が行った選択です。
ps
optargsを実装したシステムが時間の経過とともにどのように歴史的な違いを調べるかは、奈落の底の端に立つことでした。