我们正在尝试封装一个非常旧的命令行应用程序,它具有以下要求:
因此,运行它的正常方法是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,一次性完成。
答案 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 }
});