Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Git HOME环境变量未与child-process.exec一起使用_Node.js_Ssh_Environment Variables_Exec_Child Process - Fatal编程技术网

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别名:名称或服务未知