【问题标题】:Set environment variable with shelljs使用 shelljs 设置环境变量
【发布时间】:2018-08-28 13:49:23
【问题描述】:

我正在尝试使用 shelljs 在节点中设置环境变量

所以这是伪代码:

const shell = require('shelljs');

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

但这不会打印出MM的值

关于如何使用export(执行 bash 命令)通过节点设置环境变量有什么建议吗?

【问题讨论】:

    标签: node.js environment-variables shelljs


    【解决方案1】:

    您是否熟悉环境变量的一般工作方式?维基百科文章在这里有一个很好的高级摘要:https://en.wikipedia.org/wiki/Environment_variable

    关于环境变量的一个更独特的事情是它们如何跨越进程边界。每个进程都有自己的一组环境变量。您可以在自己的进程中修改环境变量而不会出现任何问题。每当您生成 (fork + exec) 子进程时,它都会继承您的一组环境变量。如果你是子进程(得到execed的进程),则不能设置父进程的环境变量。

    你现在可能意识到,如果进程 A 创建了一个子进程 B,而 B 修改了环境变量,A 将看不到这些变化。

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

    你也需要这样做。

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

    shell.env["MM"] = "2";
    

    【讨论】:

      猜你喜欢
      • 2013-03-04
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      相关资源
      最近更新 更多