我正在尝试从我的 node.js 应用程序中设置一个全局环境变量。
目标是:
- 重启APP时,环境变量仍要设置
- 打开一个新的shell,应该可以使用
- 如果可能:重新启动时,与 1 相同。
- 它应该可以在 Linux、Mac OS X 上运行(并且需要一个用于 windows 的备用 SET 命令)
这是我做的:
var setEnv = require('child_process')
.spawn('export GLOBALVARNAME='+my.value,{
stdio: 'inherit',
env: process.env
});
但这会导致
{ [Error: spawn export GLOBALVARNAME=foobar ENOENT]
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn export GLOBALVARNAME=foobar',
path: 'export GLOBALVARNAME=foobar',
spawnargs: [] }
我没有在 Windows 上对此进行测试,但在 Mac OS X(和 Linux)上,bash 上的正确命令是 export GLOBALVARNAME=value
。对于 Windows,正确的命令应该是 SET GLOBALVARNAME=value
- 不是吗?
所以主要问题是:手动操作 export GLOBALVARNAME=foobar
出了什么问题?
最佳答案
正如其他答案所指出的,炮击和更改环境变量基本上是一个 NO-OP .您想要更改当前流程及其子流程的环境,或者您想要为新流程更改环境。如@Hmlth 所说,编辑 /etc/profile
将对任何新进程进行更改。
如果您想更改当前流程的环境,这很简单:
process.env.YOUR_VAR = 'your_value';
关于node.js - 在 Node.js 之外设置全局环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32523101/