在node.js中设置一个环境variables,然后在terminal中使用它?

那么我想在使用node.js执行js文件的过程中添加一个环境variables。

类似于:process.env ['VARIABLE'] ='value';

我正在使用terminal运行使用模块的js文件,我可以设置variables,然后在js文件执行期间使用它,但我想设置variables使用“process.env”,然后当执行结束,我想用在terminal,或在另一个JS进程。

我知道可以使用child_process.exec,并使用SET(Windows)或EXPORT(Mac和Linux),但只是问如何可能,可能是可能的,或者使用哪个devise或过程来添加它,只是使用“process.env”。

在此先感谢,伙计们。

unix权限模型将不允许subprocess(您的node.js应用程序)更改其父进程(terminal内运行的shell)的环境。 同样适用于当前的工作目录,有效的uid,有效的gid以及其他一些进程参数。 AFAIK没有直接的方法来做你所要求的。 您可以执行诸如打印命令将其设置为stdout的方式,以便用户可以轻松地将该shell命令复制/粘贴到其terminal中,但最好的办法是在单独的问题中解释您要解决的更广泛的问题,并让人告诉你可行的方法来完成,而不是试图改变父进程的环境。

一个可能的解决方法是像这样从terminal运行你的节点程序:

export SOME_ENV_VAR="$(node app.js)" 

并有app.js通过process.stdout.write打印所需的值。

第二个黑客将是一个包装shell脚本沿着这些线:

app.sh

 #!/bin/bash echo app.sh running with SOME_ENV_VAR=${SOME_ENV_VAR} echo "app.sh running app.js" export SOME_ENV_VAR="$(node app.js)" exec /bin/bash 

app.js

 console.log("Some Value at " + Date()); 

在terminal中的交互式shell中运行

 echo $SOME_ENV_VAR exec ./app.sh app.sh running with SOME_ENV_VAR= app.sh running app.js echo $SOME_ENV_VAR Some Value at Thu Mar 27 2014 08:13:01 GMT-0600 (MDT) 

也许这些会给你一些想法。