如何获取调用Nodejs child_process exec方法的完整和真实的bash环境

时间:2017-07-13 06:35:18

标签: node.js linux bash child-process

我在nodejs中写了一个git hook project,它将从github接收一个post请求,并在本地机器上以指定用户身份执行一些命令。我在 child_process 模块中通过node的spawn方法运行命令。主要问题是它无法设置一个完整而干净的环境,就像通过bash登录一样。例如,' HOME'环境变量没有设置到用户的主目录,还有一些奇怪的环境变量' SODU_USER'进来了。这只是一个最简单的问题,由于这个问题很多,我无法很清楚地表达出来。

因此,我想要的是获得一个漂亮的bash环境,就像我通过ssh 登录一样。

如果命令是' git pull',则执行命令的用户是abc。也许以下方法有效:

  1. 首先,编写一个脚本startup.sh:

    # first unset all environment variables
    for i in `env | sed 's/=.*//'` ; do
        unset $i
    done
    # next do some startups
    source /etc/profile
    source /home/abc/.bashrc
    # ... some other files need to be sourced ...
    
  2. 然后,执行命令' git pull'如下所示:

    child_process.spawn('startup.sh && git pull')
    
  3. 也许它可以解决我的问题,但我无法确定。但是,这种方法并不优雅,并且使用nodejs有一些更准确和优雅的风格吗?

0 个答案:

没有答案