すべてのLinuxシステムで使用できる標準コマンドはどれですか。
たとえば、debian/ubuntu/redhat/suse/Arch/slackwareなどを取得した場合、常に次のようなコマンドが見つかります。
cd、mkdir、ls、echo、grep、sed、awk、pingなど。
言及されたコマンドのいくつかはシェルで構築されていますが、他のコマンドはそうではありませんが、常に存在します(これまでの私の知識と経験に基づく)。
一方、gawk、parted、tracerouteなどの有名なコマンドは、異なるLinuxディストリビューションにはデフォルトではインストールされません。
さまざまなウェブ検索を行いましたが、これに対する簡単な答えは見つかりませんでした。
目的は、シェルスクリプトを作成することであり、スクリプトで使用されているコマンドがシステムで使用できるかどうかを確認する必要があります。そうでない場合は、必要なバイナリをインストールするようユーザーに求めます。
残念ながら、何も利用できるという保証はありません。
ただし、ほとんどのシステムには GNU coreutils があります。それだけで約105のコマンドが提供されます。 BusyBox を代わりに使用する可能性がある組み込みシステムでない限り、おそらくそれらに依存できます。
bash 、 cron 、 GNU findutils 、 GNU grep 、 gzip 、 iproute2 、 iputils 、 man-db 、 module-init-tools 、 net -tools 、passwd( passwd または shadow )、 procps 、 tar 、および til-linux 。
一部のプログラムでは、ディストリビューション間でいくつかの違いがあることに注意してください。たとえば、/usr/bin/awk
は gawk または mawk のようになります。 /bin/sh
は ダッシュ または POSIXモードのbash の可能性があります。一部の古いシステムでは、/usr/bin/Host
の構文は BINDバージョン と同じではないため、 Dig を使用する方がよい場合があります。
いくつかの標準を探している場合、Linux Standard Baseはいくつかの 一般的に見られるプログラム を定義しますが、すべてのディストリビューションが標準に準拠していると主張するわけではなく、オプションのLSB互換パッケージをインストールした場合にのみ準拠するディストリビューションもあります。この例として、 一部のシステム デフォルトのインストールではlsb_release
が付属していないことがわかりました。
これと同様に、 POSIXによって標準化されたコマンドのリスト も役立ちます。
問題に対する別のアプローチは、各ディストリビューションのパッケージツール(Red Hatの場合はRPM、Debianの場合はDEBなど)を使用してスクリプトをパッケージ化し、必要な他のプログラムまたはパッケージへの依存関係を宣言することです。少し手間はかかりますが、何が欠けているかだけでなく、どのパッケージをインストールする必要があるかをユーザーに知らせる、わかりやすいエラーメッセージが表示されます。
より詳しい情報:
組み込みでないLinuxシステムでは、通常、ほとんどのGNUユーティリティを当てにすることができます。
さらに til-linux スイートおよび procpsスイート 。 /bin/sh
は常にbashであるとは限らず、 ash の複数のフォークの1つなど、機能の少ないシェルである場合があります。
Linux Standard Base は、すべての準拠システムで期待される機能を備えた一連の一般的なユーティリティを定義します。ほとんどの POSIXで指定されたユーティリティ も期待できます。注目すべき例外はpax
で、これは多くのディストリビューションのデフォルトインストールの一部ではありません。
シンプルにしたい場合は、lsb_release
パッケージのインストールをリクエストしてください。多くのディストリビューションには、LSBに必要なすべての依存関係を取り込むようなパッケージがあります。
組み込みシステムでは、すべての賭けがオフになっています。組み込みLinuxシステムは通常 BusyBox を実行しますが、多くのユーティリティと機能はオプションであるため、確実に入手できるものはほとんどありません。
すべてではないにしてもほとんどのLinuxディストリビューションのコマンドセットがあり、さらに言えば、Unixディストリビューションでも提供されます。これらは POSIX標準 で指定された必須コマンドです。
引用するほとんどのコマンド(cd
、mkdir
、ls
、echo
、grep
、sed
、awk
など)です。例外は、WhiteWinterWolfが正しくコメントしたping
です。