如何将$ PATH设置为通过node-pty在节点中生成进程的一部分?

时间:2018-04-30 21:58:37

标签: javascript node.js

我们正在尝试封装一个非常旧的命令行应用程序,它具有以下要求:

  1. 必须从我们的数据文件的位置启动应用程序 (即CWD是数据文件目录)
  2. 该应用程序位于默认$ PATH
  3. 的位置
  4. 应用程序启动期望应用程序路径位于$ PATH
  5. 的子流程
  6. 由于2& 3,应用程序的路径必须在启动之前手动添加到$ PATH
  7. 因此,运行它的正常方法是cd到数据目录,将应用程序目录添加到$ PATH,然后运行应用程序。我们不能通过其完整路径启动应用程序 - 必须设置$ PATH,因为应用程序期望在同一目录中调用其他子进程。我们无法修改应用程序或其要求。

    问题是:如何通过node-pty在节点中生成进程时,如何封装$ PATH的设置和启动应用程序。

    var pty = require('node-pty');
    // myapp lives in /usr/bin/app/
    var term = pty.spawn("myapp", [], {
            cwd: '/usr/data/mydata'
          });
    

    简而言之,我希望spawn发生在/ usr / data / mydata目录中,将/ usr / bin / app /添加到$ PATH,并生成myapp,一次性完成。

1 个答案:

答案 0 :(得分:1)

PATH是一个环境变量,因此使用env参数设置它应该有效。

var pty = require('node-pty');
// myapp lives in /usr/bin/app/
var term = pty.spawn("myapp", [], {
  cwd: '/usr/data/mydata',
  env: { PATH: '/usr/data/app:' + process.env.PATH }
});