我的bashrc中有以下内容:
# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
我知道start_agent
已定义,因为我可以在命令行中输入start_agent
并且“做正确的事”。问题是我希望在登录时执行start_agent
并且它没有执行。但我知道控制流正在通过它,因为函数是定义的。
答案 0 :(得分:1)
尝试:
if [ condition ]; then
echo "then branch "
start_agent
else
echo "else branch"
start_agent
fi
如果这样可行,那么你的ps -ef ....
行就没有达到预期效果。
此外,您可以尝试shellter建议set -vx
使用" echo样式"调试。