快樂的晚上。我之前在Node.js應用程序中使用過Environment Envirables,但我覺得我還沒有理解底層概念。什麼是環境變量的基礎概念?
它的(在這種情況下)不是節點誰給我設置環境變量的能力,對吧?它是Linux嗎?這個概念是否貫穿整個操作系統?環境變量是否有一個範圍?我可以在任何地方使用嗎?模式總是一樣嗎?他們是寫入運行應用程序,還是讓一些應用程序(如節點)能夠從內部主動訪問它們?
Woulld愛掌握基本概念。
快樂的晚上。我之前在Node.js應用程序中使用過Environment Envirables,但我覺得我還沒有理解底層概念。什麼是環境變量的基礎概念?
它的(在這種情況下)不是節點誰給我設置環境變量的能力,對吧?它是Linux嗎?這個概念是否貫穿整個操作系統?環境變量是否有一個範圍?我可以在任何地方使用嗎?模式總是一樣嗎?他們是寫入運行應用程序,還是讓一些應用程序(如節點)能夠從內部主動訪問它們?
Woulld愛掌握基本概念。
環境變量是由操作系統(例如Linux)提供的功能。
可以在終端或shell腳本中使用設置,則:
name=value
或者在節點中使用:
process.env.name = value;
您可以通過訪問這些殼:
echo $name
或者in Node using:
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:
test=value
echo "Shell script: $test"
node envtest.js
echo "Shell script: $test"
運行sh envtest1.sh
WIL打印:
Shell script: value
Node program: undefined
Node program: new value
Shell script: value
由於yu可以看到Node程序沒有得到該值,因爲它沒有被導出。它可以設置該值並使用新值,但不會在shell腳本中更改。
現在,寫不同的shell腳本:
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程序的原始shell腳本中不會更改它。
相反的:
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
這表明,運行test=value2 node envtest.js
test
變量的值設置爲value2
只求這個Node程序的調用 - shell腳本其餘部分的值仍然是value
,就像以前一樣。
這些是environemnt變量的3種範圍 - 通常情況下,shell腳本中的變量不會導出,您運行的程序也無法看到它。當它被導出時,你運行的程序可以看到它並且可以修改它,但它們在它們自己的副本上工作,並且在shell腳本中不會更改。
當您運行name=value command
時,將爲該命令設置環境變量,但舊值將保留在腳本的其餘部分。
這些是環境變量的基礎知識以及如何在Node中使用它們。
可能重複的[我的環境變量是什麼?](http://stackoverflow.com/questions/4431829/what-are-my-environment-variables) – corn3lius
我不這麼認爲@ corn3lius。這個問題增加了上述問題缺乏的主題的一些真實深度。 – alejdg
@Seltsam,確實[我的回覆](https://stackoverflow.com/questions/40638819/whats-the-underlieing-concept-of-environment-variables/40644231#40644231)回答你的問題?如果是這樣,那麼考慮[接受答案](http://meta.stackexchange.com/a/5235/157646),以便搜索您的問題的其他人可以看到它已被回答。 – rsp