2015-04-22 143 views
3

我在Windows 7上使用Github for Windows。我有一个bsh脚本来添加ssh-key到我的ssh-agent。我已经设置了一个SSH远程回购。sh脚本不添加ssh密钥到ssh-agent(windows git bash)

add_key.sh

#!/bin/bash  
cd ../ssh/ 
eval $(ssh-agent) 
ssh-add id.rsa 
cd ../htdocs/ 

执行命令 -

./add_key.sh 

它返回

Agent pid 5548 
Identity added: id.rsa (id.rsa) 

当我混帐推出身的主人,它失败。 但是,当我手动在ssh目录下cd,并运行相同的SSH相关的命令,并回到我的目录htdocs和git推到原点主,它的工作原理。

这是怎么发生的?

+0

你在哪里运行'git push'?其他一些shell会话?该shell会话是否正确设置了“ssh-agent”环境选项? –

+0

相同的shell会话。我没有设置任何ssh-agent env选项。我从repo文件夹(htdocs)中运行git push。 – goelakash

+0

您是使用'.' /'source'来运行这个“脚本”还是使用'。/ script.sh'?因为后者意味着你的'git push'不能和它自己的shell会话中运行的脚本在同一个会话中。 –

回答

4

你的问题是你的脚本运行在它自己的shell会话中,因为你正在运行./add_key.sh

这意味着由eval $(ssh-agent)设置的变量不会超出该shell会话,因此父会话没有它们,也不能使用代理(每次运行脚本时也可能会产生一个新的代理)。

解决方法是通过点源脚本而不是将其作为外部脚本运行来在当前会话中运行该“脚本”。

那就是你想要使用. add_key.sh