重複の可能性があります。 bash での “a=b” と “export a=b” の違い
認めるのは難しいですが、私はexport
が環境変数に何をするのかを正確に理解したことがありませんでした。変数をエクスポートしないと子プロセスで見れないことはわかっているのですが、たまに見れそうなときがあります。と言っても本当にどうなっているのか
export foo=5
そして、いつ変数をエクスポートしてはいけないのでしょうか?
99 Chas. Owens 2010-06-16
man bash
から
ENVIRONMENT
プログラムが起動されると、環境と呼ばれる文字列の配列が与えられます。これは名前と値のペアのリストで、 name=value の形式です
シェルは環境を操作するためのいくつかの方法を提供しています。呼び出されると、シェルは自身の環境をスキャンし、見つかった名前ごとにパラメータを作成し、子プロセスにエクスポートするために自動的にマークを付けます。実行されたコマンドは環境を継承します。
export
およびdeclare -x
コマンドは、パラメータや関数を環境に追加したり、環境から削除したりすることができます。環境内のパラメータの値が変更された場合、新しい値が環境の一部となり、古い値に置き換わります。実行されたコマンドによって継承される環境は、シェルの初期環境から、シェル内で変更される可能性のある値を除いたもので、unset
コマンドによって削除されたペアと、export およびdeclare -x
コマンドによって追加されたもので構成されています
16 sml 2010-06-16
エクスポートされた変数は子プロセスに渡され、エクスポートされていない変数は渡されません
127 Pylsa 2010-06-16
export
を使用すると、エクスポートコマンドが呼び出されたシェルの環境変数リストにその変数を追加することになり、シェルのすべての環境変数が子プロセスに渡されるので、これを使用することができます
シェルを終了すると環境が破壊されるので、ログイン時に環境変数が宣言され、エクスポートされます
21 alfredozn 2010-06-16