web-dev-qa-db-ja.com

輸出はBASHで何をするのですか?

可能な重複:
bashの「a = b」と「export a = b」の違い

認めるのは難しいですが、私はexportが環境変数に対して何をするのか本当に理解したことがありません。変数をエクスポートしないと、子プロセスでその変数を参照できないことがありますが、できる場合もあります。私が言うと本当に何が起こっているの

export foo=5

いつ変数をエクスポートしてはいけませんか。

71
Chas. Owens

man bashから:

ENVIRONMENT

プログラムが呼び出されると、環境と呼ばれる文字列の配列が与えられます。これは、名前=値のペアのリストで、名前=値の形式です。

シェルは環境を操作するいくつかの方法を提供します。起動時に、シェルは自身の環境をスキャンし、見つかった名前ごとにパラメータを作成して、子プロセスへのエクスポート用に自動的にマークします。実行されたコマンドは環境を継承します。 exportおよびdeclare -xコマンドを使用すると、パラメータおよび関数を環境に追加したり環境から削除したりできます。環境内のパラメータの値が変更されると、新しい値が環境の一部になり、古い値が置き換えられます。実行されたコマンドによって継承される環境は、シェルで初期値が変更される可能性があるシェルの初期環境から、unsetコマンドによって削除されるペアを差し引いたものに加え、exportおよびdeclare -xコマンドによる追加からなります。

15
sml

エクスポートされた変数は子プロセスに渡されますが、エクスポートされていない変数は渡されません。

94
BloodPhilia

exportを使用すると、exportコマンドが呼び出されたシェルの環境変数リストに変数が追加され、シェルのすべての環境変数が子プロセスに渡されるため、これを使用できます。

シェルを終了すると、その環境は破壊されます。そのため、ログイン時に環境変数が宣言され、エクスポートされます。たとえば、.bashrcファイルで

20
alfredozn