認めるのは難しいですが、私はexport
が環境変数に対して何をするのか本当に理解したことがありません。変数をエクスポートしないと、子プロセスでその変数を参照できないことがありますが、できる場合もあります。私が言うと本当に何が起こっているの
export foo=5
いつ変数をエクスポートしてはいけませんか。
man bash
から:
ENVIRONMENT
プログラムが呼び出されると、環境と呼ばれる文字列の配列が与えられます。これは、名前=値のペアのリストで、名前=値の形式です。
シェルは環境を操作するいくつかの方法を提供します。起動時に、シェルは自身の環境をスキャンし、見つかった名前ごとにパラメータを作成して、子プロセスへのエクスポート用に自動的にマークします。実行されたコマンドは環境を継承します。
export
およびdeclare -x
コマンドを使用すると、パラメータおよび関数を環境に追加したり環境から削除したりできます。環境内のパラメータの値が変更されると、新しい値が環境の一部になり、古い値が置き換えられます。実行されたコマンドによって継承される環境は、シェルで初期値が変更される可能性があるシェルの初期環境から、unset
コマンドによって削除されるペアを差し引いたものに加え、exportおよびdeclare -x
コマンドによる追加からなります。
エクスポートされた変数は子プロセスに渡されますが、エクスポートされていない変数は渡されません。
export
を使用すると、exportコマンドが呼び出されたシェルの環境変数リストに変数が追加され、シェルのすべての環境変数が子プロセスに渡されるため、これを使用できます。
シェルを終了すると、その環境は破壊されます。そのため、ログイン時に環境変数が宣言され、エクスポートされます。たとえば、.bashrcファイルで