2015-04-22 144 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