2016-11-16 5 views
3

こんにちは。私はNode.jsアプリケーションでEnvironment Envirablesを使用していましたが、私はまだその根底にある概念を理解できていないと感じています。環境変数の根底にある概念は何ですか?

私の環境変数を設定できるノードはありません(この場合)。それはLinuxですか?このコンセプトはOS全体を通して存続していますか?環境変数はスコープを持っていますか?どこでも使えますか?パターンは常に同じですか?それらは実行アプリケーションに書き込まれるのですか、またはアプリケーション(ノードのような)は内部から積極的にアクセスする能力を備えていますか?

Woulldは基本概念を理解しています。

+1

私の環境変数は何ですか?(http://stackoverflow.com/questions/4431829/what-are-my-environment-variables) – corn3lius

+0

私はそう思いません@ corn3lius。この質問は、言及された質問に欠けている、実際の深さを、被験者に加える。 – alejdg

+0

@Seltsam、[私の返信](https://stackoverflow.com/questions/40638819/whats-the-underlieing-concept-of-environment-variables/40644231#40644231)はあなたの質問に答えましたか?そうであれば、[回答を受け入れる](http://meta.stackexchange.com/a/5235/157646)を検討して、あなたの質問を検索する他の人々が回答していることが分かるようにしてください。 – rsp

答えて

3

環境変数は、オペレーティングシステム(Linuxなど)によって提供される機能です。

name=value 

をまたはノードで使用して::

あなたは使用して端末またはシェルスクリプトで、その後設定することができます

process.env.name = value; 

は、あなたが使用して、シェルでそれらにアクセスすることができます。

echo $name 

かノード内で使用:

console.log(process.env.name); 

環境変数の範囲は、定義されているプロセスと、実行されるサブプロセスです。ノードプログラムを書く例えば

呼ばenvtest.js:

console.log('Node program:', process.env.test); 
process.env.test = 'new value'; 
console.log('Node program:', process.env.test); 

とシェルスクリプトと呼ばれるenvtest1.sh:

Shell script: value 
Node program: undefined 
Node program: new value 
Shell script: value 

test=value 
echo "Shell script: $test" 
node envtest.js 
echo "Shell script: $test" 

sh envtest1.shウィル印刷を実行しますyuが見ることができるように、Nodeプログラムはエクスポートされなかったため値を取得しません。値を設定して新しい値を使用できますが、シェルスクリプトでは変更されません。今

、別のシェルスクリプトを書く:

test=value 
export test 
echo "Shell script: $test" 
node envtest.js 
echo "Shell script: $test" 

この時間をsh envtest2.shが印刷されます実行している:

Shell script: value 
Node program: value 
Node program: new value 
Shell script: value 

をそれはそれは今回輸出されたため、ノードプログラムが値を得たことを意味し、それはそれを変更して新しい値を使用することはできますが、独自のコピーで動作します。このNodeプログラムを呼び出す元のシェルスクリプトでは変更されません。

test=value 
export test 

あなたが書くことができます:代わりの

速記として

export test=value 

より複雑な例、envtest3.shを書く:

export test=value 
echo "Shell script: $test" 
node envtest.js 
echo "Shell script: $test" 
test=value2 node envtest.js 
echo "Shell script: $test" 

それが印刷されます。この時間を:

Shell script: value 
Node program: value 
Node program: new value 
Shell script: value 
Node program: value2 
Node program: new value 
Shell script: value 

だけにvalue2test=value2 node envtest.jsセットtest変数の値を実行していることを示していますNodeプログラムのこの呼び出し - シェルスクリプトの残りの部分の値は、以前と同じようにまだvalueです。

これらは環境変数の3種類のスコープです。通常、シェルスクリプト内の変数はエクスポートされず、実行するプログラムはそれを見ることができません。エクスポートされると、実行するプログラムはそれを見ることができ、変更することができますが、自分のコピーで動作し、シェルスクリプトでは変更されません。

name=value commandを実行すると、環境変数はそのコマンドだけで設定されますが、古い値は残りのスクリプトに残ります。

これは環境変数の基本であり、Nodeでの使用方法です。

関連する問題