diff --git a/.bash_profile b/.bash_profile index 006ed18..f1a1ca0 100644 --- a/.bash_profile +++ b/.bash_profile @@ -35,31 +35,37 @@ unset _PLATFORM # SSH agent. hash ssh-add ssh-agent >/dev/null 2>&1 && { - if [ ! -z "$SSH_AGENT_PID" ] && [ ! -z "$SSH_AUTH_SOCK" ]; then - echo - echo "Connected to forwarded ssh-agent at PID $SSH_AGENT_PID." - elif [ -z "$SSH_AGENT_PID" ] || [ -z "$SSH_AUTH_SOCK" ]; then - echo - echo "Problem connecting to forwarded ssh-agent!" - false + if [ ! -z "$SSH_AUTH_SOCK" ]; then + ssh-add -l >/dev/null 2>&1 + if (( $? < 2 )); then + echo + echo "Connected to forwarded ssh-agent ($SSH_AGENT_PID)." + else + echo + echo "Problem connecting to forwarded ssh-agent!" + fi else . ~/.ssh/agent 2>/dev/null - if [ -z "$SSH_AGENT_PID" ] || ! pgrep -u "$USER" -f "$(hash -t ssh-agent)" | grep "^$SSH_AGENT_PID$" >/dev/null; then + ssh-add -l >/dev/null 2>&1 + if (( $? < 2 )); then + echo + echo "Connected to local ssh-agent at ($SSH_AGENT_PID)." + else if ssh-agent -s | sed -e '/^echo/ d' >~/.ssh/agent; then . ~/.ssh/agent - if ! ssh-add -l >/dev/null 2>&1; then + ssh-add -l >/dev/null 2>&1 + if (( $? < 2 )); then alias ssh='ssh-add -l >/dev/null 2>&1 && unalias ssh || { ssh-add && unalias ssh; }; ssh' + echo + echo "Started new local ssh-agent at PID $SSH_AGENT_PID." + else + echo + echo "Problem connecting to local ssh-agent!" fi - echo - echo "Started new local ssh-agent at PID $SSH_AGENT_PID." else echo echo "Failed to start local ssh-agent!" - false fi - else - echo - echo "Connected to local ssh-agent at PID $SSH_AGENT_PID." fi fi }