在NodeJS中生成具有有效HOME文件夹集的child_process

时间:2014-06-24 21:13:30

标签: node.js child-process

我正在尝试在NodeJS中生成一个访问我的主文件夹的进程,并且看不到,以使下面的任何一个选项工作。

var spawn = require('child_process').spawn,
    options = {stdio: 'inherit', env: process.env};

spawn('ls', ['~/'], options);
spawn('ls', ['$HOME'], options);

输出

ls: ~/: No such file or directory
ls: $HOME: No such file or directory

我已经确认options.env.HOME已正确设置,不知道我做错了什么?

更新

所以这就是我最终做的工作(使用script代替ls):

spawn('script', [process.env.HOME], options);

然后,在我的剧本里面:

#!/usr/bin/env bash
export HOME=$1

我仍然不明白为什么options.env.HOME似乎无法正常工作。

1 个答案:

答案 0 :(得分:1)

process.env.HOME就是你想要的。像这样使用它:

var spawn = require('child_process').spawn,
    options = {stdio: 'inherit'};

var ls = spawn('ls', [process.env.HOME]);

ls.stdout.on('data', function(data){
  console.log(String(data));
});

ls.stderr.on('data', function(data){
  console.log(String(data));
});

然后,您可以在调用节点脚本时在shell中设置HOME:

HOME='/tmp'; node ls.js

或者,您不必重载HOME。要使用您喜欢的任何变量,请先将其导出,然后通过process.env。:

访问它
export FOO='/tmp'; node ls.js