我在Windows 7上使用Github for Windows。我有一个 bash 脚本将 ssh 密钥添加到我的 ssh 代理。我已经设置了一个 ssh 远程存储库。
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)
当我 git 推送源主时,它失败了。但是当我在 ssh 目录中手动 cd,并运行相同的与 ssh 相关的命令并将 cd 回我的目录 htdocs 和 git 推送到源码主时,它可以工作。
为什么会这样?
您的问题是您的脚本在其自己的 shell 会话中运行,因为您正在运行./add_key.sh
.
这意味着eval $(ssh-agent)
设置的变量不会存在于该 shell 会话之外,因此父会话没有它们并且无法使用代理(此外,每次运行脚本时都可能生成一个新代理)。
进行点源而不是将其作为外部脚本运行,从而在当前会话中运行该"脚本"。
那就是你想使用. add_key.sh
.