このページの内容

17 標準への適合

GNU ユーティリティのデフォルト動作は、いくつかの場合に POSIX 標準と互換性がありません。この非互換性を抑えるには、POSIXLY_CORRECT 環境変数を定義してください。POSIX 適合性を確認しているのでなければ、通常 POSIXLY_CORRECT を定義する必要はありません。

通常、オプションとオペランドは任意の順序で指定でき、プログラムはすべてのオプションがすべてのオペランドより前にあるものとして動作します。たとえば「diff lao tzu -C 2」は「diff -C 2 lao tzu」と同様に動作します。「2」は -C のオプション引数だからです。ただし、POSIXLY_CORRECT 環境変数が設定されている場合は、特定のコマンドについて別途規定されていない限り、オプションをオペランドより前に指定しなければなりません。

新しい版の POSIX は、ときに古い版と互換性がありません。たとえば古い版では「diff -c -10」というコマンドに「diff -C 10」と同じ意味を認めていましたが、POSIX 1003.1-2001「diff」では、-10 のような数字列のオプションは認められなくなりました。

GNU ユーティリティは通常、システムの標準となっている POSIX の版に適合します。別の版の POSIX に適合させるには、_POSIX2_VERSION 環境変数を、標準が採用された年と月を指定する yyyymm 形式の値に定義してください。現在、_POSIX2_VERSION には2つの値がサポートされています。「199209」は POSIX 1003.2-1992、「200112」は POSIX 1003.1-2001 を表します。たとえば古い版の POSIX を想定して「diff -c -10」を使う古いソフトウェアを実行している場合、環境で「_POSIX2_VERSION=199209」を設定することによって互換性の問題を回避できます。