gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:18 24 4
gpt4 key购买 nike

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

它(在这种情况下)不是 Node 给我设置环境变量的能力,对吧?是Linux吗?这个概念是否贯穿整个操作系统?环境变量有范围吗?我可以在任何地方使用它们吗?模式总是一样的吗?它们是写入运行的应用程序,还是某些应用程序(如 Node )能够从内部主动访问它们?

很想掌握基本概念。

最佳答案

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

您可以使用以下命令在终端或 shell 脚本中进行设置:

name=value

或者在 Node 中使用:

process.env.name = value;

您可以在 shell 中访问它们:

echo $name

或者在 Node 中使用:

console.log(process.env.name);

环境变量的作用域是定义时的流程及其执行的子流程。

例如编写一个名为 envtest.js 的 Node 程序:

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 将打印:

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

如您所见,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 程序获得了这个值,因为它这次被导出了,它仍然可以更改它并使用新值但是它在它自己的副本上工作,它在调用这个 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.jstest 变量的值设置为 value2 但仅限于此调用 Node 程序 - shell 脚本其余部分中的值仍然是 value 和以前一样。

这些是环境变量的 3 种范围 - 通常 shell 脚本中的变量不会导出,您运行的程序也看不到它。当它被导出时,您运行的程序可以看到它并可以修改它,但它们在自己的副本上工作并且它不会在 shell 脚本中更改。

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

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

关于node.js - 环境变量的基本概念是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40638819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com