首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shelljs设置环境变量

使用shelljs设置环境变量
EN

Stack Overflow用户
提问于 2018-03-19 21:18:55
回答 1查看 4.8K关注 0票数 5

我试图在带有shelljs的节点中设置env变量

下面是psudo代码:

代码语言:javascript
复制
const shell = require('shelljs');

shell.exec('export MM=2');
shell.exec('echo $MM');

但是这并没有输出MM的值。

对于如何使用export (执行bash命令)通过节点设置env变量有任何建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-19 21:33:19

您是否熟悉环境变量一般是如何工作的?维基百科的文章在这里有一个很好的高级摘要:variable

环境变量的一个更独特之处是它们如何跨流程边界运行。每个进程都有自己的一组环境变量。您可以在您自己的流程中修改环境变量,而不会出现任何问题。每当您生成(fork + exec)子进程时,它会继承您的一组环境变量。如果您是子进程(获得exec编辑的进程),则不能设置父进程的环境变量。

现在您可能意识到,如果进程A创建子进程B,而B修改环境变量,则A将不会看到更改。

所以贝壳会特别处理这个。export是内置的shell。换句话说,bash (或任何其他shell)不会通过调用二进制文件来实际执行export命令。相反,shell将理解export需要做什么,并直接这样做,调整shell进程中的环境变量,而不是在单独的子进程中。然后,运行的任何进一步命令都将从shell继承(更新的)环境变量。

你也要做同样的事。

为此,shelljs提供了一个单独的对象env

代码语言:javascript
复制
shell.env["MM"] = "2";
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49372501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档