Node.js 环境变量的基本概念是什么?

Node.js 环境变量的基本概念是什么?,node.js,linux,Node.js,Linux,晚上好。我以前在Node.js应用程序中使用过Environment Envirables,但我觉得我还没有理解其基本概念 它(在本例中)不是让我能够设置环境变量的节点,对吗?是Linux吗?这个概念是否贯穿整个操作系统?环境变量有作用域吗?我可以在任何地方使用它们吗?模式总是一样的吗?它们是否写入运行应用程序,或者某些应用程序(如node)是否能够从内部主动访问它们 我很想掌握基本概念 环境变量是操作系统(如Linux)提供的一种功能 然后,可以使用以下命令在终端或shell脚本中设置: na

晚上好。我以前在Node.js应用程序中使用过Environment Envirables,但我觉得我还没有理解其基本概念

它(在本例中)不是让我能够设置环境变量的节点,对吗?是Linux吗?这个概念是否贯穿整个操作系统?环境变量有作用域吗?我可以在任何地方使用它们吗?模式总是一样的吗?它们是否写入运行应用程序,或者某些应用程序(如node)是否能够从内部主动访问它们


我很想掌握基本概念

环境变量是操作系统(如Linux)提供的一种功能

然后,可以使用以下命令在终端或shell脚本中设置:

name=value
或在节点中使用:

process.env.name = value;
console.log(process.env.name);
您可以使用以下命令在shell中访问它们:

echo $name
或在节点中使用:

process.env.name = value;
console.log(process.env.name);
环境变量的范围是定义时的流程及其执行的子流程

例如,编写名为envetest.js的节点程序:

console.log('Node program:', process.env.test);
process.env.test = 'new value';
console.log('Node program:', process.env.test);
还有一个名为envtest1.sh的shell脚本:

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所看到的,节点程序没有得到值,因为它没有导出。它可以设置值并使用新值,但不会在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
Shell script: value
Node program: value
Node program: new value
Shell script: value
Node program: value2
Node program: new value
Shell script: value
这意味着节点程序获得了该值,因为它是这次导出的,它仍然可以更改该值并使用新值,但它在自己的副本上工作,在调用该节点程序的原始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
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
,但仅限于节点程序的调用-shell脚本其余部分的值仍与以前一样
value

这是环境变量的3种作用域-通常情况下,shell脚本中的变量不会导出,并且运行的程序看不到它。当它被导出时,您运行的程序可以看到它并修改它,但它们使用自己的副本,并且不会在shell脚本中更改

运行
name=value命令时
将仅为该命令设置环境变量,但旧值将保留在脚本的其余部分


这些是环境变量的基础知识,以及如何在Node中使用它们。

我不这么认为@corn3lius的可能副本。这个问题为上述问题所缺乏的主题增加了一些真正的深度。@Seltsam,回答你的问题了吗?如果是这样的话,那么考虑其他人,寻找你的问题可以看到它已经被回答。