【问题标题】:Why does Node not read the env var of the current shell? [duplicate]为什么 Node 不读取当前 shell 的 env var? [复制]
【发布时间】:2017-11-08 11:50:47
【问题描述】:

如下所示,我设置了一个环境变量FOO,但是当我在下一行执行console.log 时,它是undefined。如果我将它设置在执行console.log 的同一行,它就存在。为什么会有这样的行为?

$ FOO="123"
$ echo $FOO
123
$ node -e "console.log(process.env.FOO)"
undefined
$ FOO="123" node -e "console.log(process.env.FOO)"
123

节点版本:6.6.0

【问题讨论】:

  • 你需要使用export FOO= "123"

标签: node.js shell environment-variables


【解决方案1】:

如果要为当前终端会话设置环境变量,需要使用EXPORT

所以,这段代码可以工作

export FOO=123
node -e "console.log(process.env.FOO)"
123

EXPORT 使分配对子进程可见。查看thread了解更多详情

【讨论】:

  • 非常感谢!该代码运行良好,但为了未来读者的利益,如果您能解释需要这样做的原因是什么,那就太好了。
  • 是的,我可以,但我认为社区提供的链接 (What does “export” do in shell programming?) 做得比我做得更好。
  • 我明白了,但我不得不一直滚动到该线程的底部才能找到解释:(
  • 我又添加了一行和另一个线程的链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 2016-08-19
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
相关资源
最近更新 更多