POSIXは標準ユーティリティがPATHにあることを保証しますか?

POSIXは標準ユーティリティがPATHにあることを保証しますか?

存在する「コマンドの検索と実行」セクション、POSIX仕様では、PATH実行するユーティリティを見つけるときに検索するように指示されています(いくつかの例外があります)。仕様PATHには、初期化がすべての標準ユーティリティで見つかった値が保証されるという言及はありますか?

または、標準ユーティリティを実行しようとしたときに「コマンドが見つかりません」エラーが発生しないようにするには、次の作業を行う必要がありますか?

PATH=$(command -p sh -c 'printf %s "${PATH}"')

(よりcommandユーティリティのPOSIX仕様)

答え1

はい、いいえ。 POSIX環境では、ユーティリティーは仕様の説明に従って動作する必要があります。実際、これは互換バージョンのユーティリティが存在する必要があることを意味します$PATH。ただし、POSIX互換システムでプログラムを実行している場合は、非互換環境で実行できます。実際によく起こるのは、オペレーティングシステムにレガシーモードとPOSIXモードがあり、デフォルトはレガシーモードです。一部のコマンドが欠落しているよりも悪いことは、レガシーモードに意味の異なるオプションなどの非互換性があることが多いということです。

PATH製品を検索できます。getconf。もちろん、getconfオリジナルが$PATH正しくないかもしれないので、これは難しいです。申請目的注文する1つのアプローチを示しています。

command -p getconf PATH

仕様を理解すると、POSIX 準拠環境でプログラムを実行する場合は必要ありません。 POSIX 準拠環境でプログラムを実行しないと、POSIX は適用されません。ただし、このアプリケーションの使用は提案と見なすことができます。これがうまくいかない場合、サプライヤーがPOSIX仕様文字について何をしたかに関係なく、その仕様に従わなかったとサプライヤーに苦情を申し立てる権利があります。魂。

関連情報