我试图从我的node.js应用程序中设置一个全局环境变量.
目标是:
这是我做的:
var setEnv = require('child_process')
.spawn('export GLOBALVARNAME='+my.value,{
stdio: 'inherit',
env: process.env
});
Run Code Online (Sandbox Code Playgroud)
但这导致了
{ [Error: spawn export GLOBALVARNAME=foobar ENOENT]
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn export GLOBALVARNAME=foobar',
path: 'export GLOBALVARNAME=foobar',
spawnargs: [] }
Run Code Online (Sandbox Code Playgroud)
我没有在Windows上对此进行测试,但在Mac OS X(和Linux)上,bash上的正确命令是export GLOBALVARNAME=value.对于Windows,正确的命令应该是SET GLOBALVARNAME=value- 不是吗?
所以主要问题是:手动工作出了export GLOBALVARNAME=foobar什么问题?
小智 3
export不是一个独立的命令,而是一个 shell 内置命令,它为当前 shell 进程及其设置后分叉的子进程设置环境变量。
您无法为不是当前进程后代的进程设置环境变量。而在Linux下,是没有系统环境变量这样的东西的。
在 Linux 下,您的变量应该在生成您的应用程序的 init 脚本中或在 systemd 单元中设置。如果您希望它在交互式用户 shell 中可用,则应将其设置为/etc/profile或/etc/profile.d
。