実行した場合
export TEST=foo
echo $TEST
fooを出力します。
実行した場合
TEST=foo echo $TEST
そうではありません。エクスポートやスクリプトを使用せずにこの機能を取得するにはどうすればよいですか?
承認された回答:
これは、シェルがコマンドラインの変数を前に展開するためです。 実際にコマンドを実行しますが、その時点では変数は存在しません。使用する場合
TEST=foo; echo $TEST
動作します。
export
変数が後で実行されるコマンドの環境に表示されるようになります(これがbashでどのように機能するかについては、help export
を参照してください。 )。変数を1つのコマンドの環境に表示するだけでよい場合は、試したものを使用してください。例:
TEST=foo your-application
シェル構文は、これを機能的にであると説明しています。 同等:
export TEST=foo
your-application
unset TEST
詳細については、仕様を参照してください。
興味深いのは、export
コマンドは、変数 nameのエクスポートフラグを切り替えます 。したがって、次の場合:
unset TEST
export TEST
TEST="foo"
TEST
エクスポート時に定義されていなくてもエクスポートされます。ただし、さらにunset
エクスポート属性を削除する必要があります。