2011-09-14 8 views

答えて

101

エクスポート変数($HOMEおよび$PATHなど)は、他のプログラムで使用できます。 通常の(エクスポートされていない)変数は、他のプログラムでは使用できません。

詳細については、GNU Bashマニュアルのexport builtinのエントリを参照してください。非エクスポートされた変数は(...)と同様の表記を経由して実行サブシェルに利用できるようになることを

注:

$ othervar=present 
$ (echo $othervar; echo $variable; variable=elephant; echo $variable) 
present 
Hello 
elephant 
$ echo $variable 
Hello 
$ 

サブシェルはもちろん、親シェル変数に影響を与えることができません。

サブシェルについての情報は、Bashマニュアルのcommand groupingおよびcommand execution environmentにあります。

+0

'grep'コマンドの出力がないことをより明確に示すために、いくつかの新しい行と' $ 'を単に追加しました。もちろん、これが可読性を失うと考えるならば、ロールバックしてもかまいません。 – fedorqui

12

まあ、それは一般にシェルに依存します。 bashの場合、変数は「エクスポート可能」としてマークされ、実行中の子プロセスの環境に表示されます。

エクスポートされていない変数は、現在のプロセス(シェル)からのみ表示されます。 bash manページから

export [-fn] [name[=word]] ...
export -p

指定する名前は、続いて実行されるコマンドの環境へ自動的にエクスポートするためにマークされています。

-fオプションが指定されている場合、名前は関数を参照します。名前が指定されていない場合、または-pオプションが指定されている場合は、このシェルでエクスポートされたすべての名前のリストが出力されます。

-nオプションを指定すると、各名前からエクスポートプロパティが削除されます。

変数名の後に=wordがある場合、変数の値はwordに設定されます。

exportは、無効なオプションが見つかったか、名前の1つが有効なシェル変数名でないか、または-fに機能ではない名前が指定されていない限り、終了ステータス0を返します。

またtypesetコマンドでエクスポートなどの変数を設定すると、自動的にset -aと、のような将来のすべての変数の作品や変更をマークすることができます。

-2

エクスポートされた変数は、プロセス階層内のすべてのプロセスで使用できます。たとえば、子プロセスによってエクスポートされたデータは親プロセスで使用でき、その逆もあります。

エクスポートの主な使用例は、2つのプロセス間でデータを共有することです。

+1

子プロセスはその親の値を変更できません。 –

関連する問題