0

我的 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在登录时执行并且它没有执行。但是我知道控制流正在通过它,因为定义了函数。

4

1 回答 1

1

试试:

if [ condition ]; then
  echo "then branch "
  start_agent
else
  echo "else branch"
  start_agent
fi

如果这行得通,那么就是您的ps -ef ....线路没有按照您的预期进行。

此外,您可以尝试 shellter 建议set -vx的“回声样式”调试。

于 2014-03-20T15:39:36.603 回答