如何防止环境变量泄漏到子进程?

时间:2015-07-22 02:13:38

标签: node.js windows environment-variables child-process atom-editor

在node / io.js中,默认情况下,调用child_process.exec()会导致子进程继承父进程的所有环境变量。据我了解,这是Windows的正常行为。 CreateProcess功能。

但是,这对我来说是个问题,因为父进程(Atom) by default sets NODE_ENV to production在泄露给子进程(例如终端应用程序)时会导致下游出现模糊的,有时甚至是严重的问题。

我能想到的唯一两种可能的解决方案是将env选项参数的exec()键设置为:

  1. 一个空对象。这会导致子进程接收一组新的系统环境变量。这样的问题是任何特定于用户的环境变量都会丢失,例如APPDATA,导致下游出现更多问题。
  2. process.env的副本,其中根据需要删除或修改有问题的变量。工作,但无法知道这些变量的先前值是什么,所以很可能会破坏原始值。
  3. node / io.js中是否有一种方法可以确保子进程不继承父进程的环境变量,但仍然拥有所有当前用户的环境变量(例如{{1} })?

    在Atom 1.0.2的嵌入式io.js(1.5.1),Windows 7 SP1 64位下运行。

0 个答案:

没有答案