回答:
export
変数をサブプロセスに伝播します。
たとえば、した場合
FOO=bar
FOOをチェックしたサブプロセスは変数を見つけられませんが、
export FOO=bar
サブプロセスはそれを見つけることができます。
ただし、既に環境変数として定義されている場合FOO
は、その環境変数の値を変更します。FOO=bar
例えば:
FOO=one # Not an environment variable
export FOO # Now FOO is an environment variable
FOO=two # Update the environment variable, so sub processes will see $FOO = "two"
古いシェルはexport FOO=bar
構文をサポートしていませんでした。あなたは書く必要がありましたFOO=bar; export FOO
。
export
」を使用しない場合、環境変数を定義するのではなく、シェル変数のみを定義します。シェル変数は、シェルプロセスでのみ使用可能です。環境変数は、シェルだけでなく、後続のプロセスでも使用できます。さらに、サブシェルは括弧で囲まれたコマンドであり、シェル変数にアクセスできますが、あなたが話しているのはシェルである子プロセスです。
また、エクスポートを使用せずに呼び出しシェルで変数を使用できるようにする場合は、次の操作を実行できます。
ファイルa.kshは-
#!/bin/ksh
FOO=bar
プロンプトで、これを実行します
> . a.ksh
これにより、同じシェル内でコマンドが実行され、$ FOOが使用可能になります。
一方、
> a.ksh
$ FOOはa.ksh内でのみ使用可能になります。a.kshの呼び出し後は存在しません。