環境変数の設定を解除すると、常に代替動作が発生しますか?

環境変数の設定を解除すると、常に代替動作が発生しますか?

Bourneシェルと派生プログラムに関して、私はIFSこれが「解析」というより広範なプロセスに必要なフィールド分割(フィールドを「単語」に分割する方法コマンド)のためのアクションプログラムであると理解しています。

IFS(環境変数に)設定されていない場合(と同じunset IFS)シェルのように行動しなければならないIFSの値は<space><tab>とです<newline>


一時的な重大な結果は取り除き、直感的に環境変数を設定解除すると警告なしに削除されると思います。これはrm -rf /*、システムが警告なしに破壊される可能性がある方法と似ており、人工的にunset xyz生成された非環境変数を設定解除してから発生するものと似ています。削除します)。


unset IFSしたがって、実際にキャンセルするのではなく、ある種のデフォルトのフォールバック動作で(他の場所で)リセットすることだと言いたいと思います。

環境変数の設定を解除すると、常に代替動作が発生しますか?

ベストアンサー1

これはbash具体的ではありませんが、POSIXの動作を実装するすべてのシェルに適用されます。

設定を解除すると、変数は設定IFS解除されます。unset IFS魔法のように他の値は得られません。

POSIX 標準は明確に次のように述べています。

設定されていない場合は、IFS設定されていない変数に対して正常に機能する必要があります。 [...]

readシェルがフィールド分割(引用符なしの値分割、入力分割、"$*"文字列の位置引数分割)を実行しようとしたときに設定されていないIFS場合は、機能する必要があると言います。まるでこのIFS変数の値には、スペース、タブ、および改行が含まれます。

これは、ユーティリティ(この場合はシェル)が利用可能な場合は変数を使用し、そうでなければ明確に定義されたデフォルトの動作を持つとは言いません。

また、IFS環境変数ではなく、環境変数になってはいけません。つまり、エクスポートする必要はありません。現在、シェルと組み込みreadユーティリティでのみ使用されます。シェルはIFS起動時に空白、タブ、および改行に設定されます。

特別セクションも参照してくださいシェル変数POSIX規格で。

おすすめ記事