シェルスクリプトを作成するときにできるだけ多くの移植性を得るために、ターゲットシステムにすでにインストールされているコマンドラインツールを引き続き使用することをお勧めします。
次の例のように、特定のツールを評価できます。
デフォルトでは、awkなしでインストールされるUnixのバージョンはありますか?
次のようにターゲット分布に基づいて検索することもできます。
Debianにはデフォルトでどのパッケージがインストールされていますか? [...]
一度に1つのコマンド/ディストリビューションを検索するのではなく、承認されていない場合、少なくとも* nixシステムにインストールされる可能性のある公式またはどの程度確立されたコマンドセットがありますか?範囲をLinuxに絞り込むとどうなりますか?
ベストアンサー1
UnixまたはUnixファミリーと合理的に呼ぶことができるすべてはPOSIX便利です。通常、これらのユーティリティが存在し、リストされているオプションをサポートし、示されているとおりに機能すると想定できます。いくつかの制限があります。
- オプションでマークされた機能は、すべての地域で利用できない場合があります。
- 最近追加された機能はまだどこにも表示されない可能性があります。 「変更履歴」セクションを確認してください。
- ソフトウェアにエラーがあります。特定のシステムは通常、いくつかの特殊なケースでは仕様から外れます。時々、開発者やディストリビューションマネージャは仕様から逸脱することには気を配りません。経験以外にこれを知る方法はありません。
以下は、多くのLinuxディストリビューションで発生する可能性のある制限です。
ed
pax
デフォルトのインストールではしばしば欠けています。- 極端な作業制御ケースは、kshの外で奇妙に動作する傾向があります。
に限定する場合非埋め込みLinux、いくつかの追加の仮定を行うことができます。
- ほとんどのディストリビューションは次のとおりです。ファイルシステム階層標準、これはPOSIX以外の多くのユーティリティを使用する必要があります。
- バッシュが使えます。しかし、
/bin/sh
おそらくバッシュではないでしょう。 - ほとんどのPOSIXユーティリティはGNUコアツール実装するとかなりの拡張機能が提供されます。
- ユーティリティLinux使用できます(ただし、一部のユーティリティは、同じ名前とオプションが異なる可能性があるユーティリティの他の実装に置き換えることができます)。
存在する組み込みLinux、シェル、ユーティリティは一般的に以下に提供されます。忙しい箱。 BusyBoxは小規模システムを対象とするため、POSIXが要求する機能を含む一部の機能を意図的に省略します。 BusyBox にはコンパイル時間の設定オプションがたくさんあるため、特定のシステムで何を使用できるかを実際に予測することはできません。 Embedded Linux の移植性を最大化するには、ユーティリティを使用する際に BusyBox でそのソースコードを確認し、条件付きコンパイル保護オプションを使用しないでください。インストールにユーティリティが完全に欠けている場合は役に立ちません。