Node.js Git HOME环境变量未与child-process.exec一起使用
子进程的Node.js Git HOME环境变量未与child-process.exec一起使用,node.js,ssh,environment-variables,exec,child-process,Node.js,Ssh,Environment Variables,Exec,Child Process,子进程的exec()方法的第二个可选参数是带有env属性的选项对象。这应该为将要运行的可执行文件设置环境变量,但在某些情况下并非如此 我试图做的是将git的HOME变量设置为不同的路径,以便主机别名MY_SSH\u host\u alias读取$HOME/.SSH/config文件并为该别名选择适当的密钥。我之所以尝试这样做,是因为我的系统的默认.ssh文件夹不在主文件夹中 但是,以下操作失败,并从$HOME/.ssh/ const exec = require('child-process')
exec()
方法的第二个可选参数是带有env
属性的选项对象。这应该为将要运行的可执行文件设置环境变量,但在某些情况下并非如此
我试图做的是将git的HOME变量设置为不同的路径,以便主机别名MY_SSH\u host\u alias
读取$HOME/.SSH/config
文件并为该别名选择适当的密钥。我之所以尝试这样做,是因为我的系统的默认.ssh文件夹不在主文件夹中
但是,以下操作失败,并从$HOME/.ssh/
const exec = require('child-process').exec
var succeeds = 'echo "my home is $HOME"' // prints my home is ~/mypath/
var fail = 'git clone MY_SSH_HOST_ALIAS:repo.git'
var options = { env: { HOME: '~/mypath/' } }
exec(fail, options, function(e, out, err) {
console.out(e, out, err)
})
如果您拼出实际路径而不是使用“~”会怎么样?这没有什么区别,但是当我创建HOME变量时(通过options参数)
~/mypath/.ssh
,这是不正确的,因为ssh在$HOME
中查找.ssh//code>。任何没有.ssh子文件夹的路径都会导致此错误。错误是,ssh:无法解析hotname MY\u ssh\u HOST\u别名:名称或服务未知