我有以下bash脚本来启动ssh-agent,添加我的密钥并对repo执行git pull。代理启动,添加密钥但git pull不执行...至少没有任何内容回显给终端。如果我将它输入终端,git命令就可以工作......我的bash脚本中是否需要做些什么才能使它工作?
#!/bin/bash
# if we can't find an agent, start one, and restart the script.
if [ -z "$SSH_AUTH_SOCK" ] ; then
exec ssh-agent bash -c "ssh-add ; $0"
exit
fi
exec ssh-add ~/.ssh/mykey
git --git-dir=/var/www/node/myapp/.git pull origin master
当我将-x添加到#!/ bin / bash时,这是终端输出
+ '[' -z '' ']'
+ exec ssh-agent bash -c 'ssh-add ; ./startgit.sh'
+ '[' -z /tmp/ssh-<redacted>/agent.1733 ']'
+ exec ssh-add /home/ec2-user/.ssh/mykey
Identity added: /home/ec2-user/.ssh/mykey (/home/ec2-user/.ssh/mykey)
答案 0 :(得分:8)
exec
命令用当前执行的进程替换当前shell。因此,脚本中跟随它的行不会被执行。
从联系手册:
exec :exec [-cl] [-a name] file [redirection ...]
Exec FILE,用指定的程序替换此shell。 你应该从行
中删除它
exec ssh-add ~/.ssh/mykey
并且只是
ssh-add ~/.ssh/mykey