Gitify the working tree.
[profile.git] / .profile.d / ssh.bashrc
1 SOCKET=~/.ssh/agent
2
3 function get_agent_pid() {
4   ps waux | grep -- ^$USER\ .\*ssh-agent\ -a\ .\*\ -s | grep -v grep | awk '{ print $2 }' | head -n 1
5 }
6
7 if [ ! -z "$SSH_CLIENT" ]; then
8   # Set display if we aren't already forwarding X11
9   if [ "$DISPLAY" = "" ]; then
10     export DISPLAY="$(echo $SSH_CLIENT | cut -s -d ' ' -f 1):0"
11   fi
12 fi
13
14 # Try to hook up with already running ssh-agent.
15 if [ $UID -gt 0 ]; then
16   # Not all OSes support ``ps -wu''.
17   RUNNING_AGENT="$(get_agent_pid)"
18
19   # Has the socket gone away?
20   if [ ! -z "$RUNNING_AGENT" -a ! -S "$SOCKET" ]; then
21     if kill $RUNNING_AGENT; then
22       RUNNING_AGENT="$(get_agent_pid)"
23     else
24       echo >&2 "$SOCKET has gone away but agent is running as PID $RUNNING_AGENT."
25     fi
26   fi
27
28   if [ -z "$SSH_AGENT_PID" -o ! "$SSH_AGENT_PID" = "$RUNNING_AGENT" ]; then
29     export SSH_AGENT_PID="$RUNNING_AGENT"
30     if [ "$SSH_AGENT_PID" = "" ]; then
31       unset SSH_AGENT_PID
32       unset SSH_AUTH_SOCK
33       # Start ssh-agent up then.
34       rm -f "$SOCKET"
35       eval $(/usr/bin/ssh-agent -a "$SOCKET" -s)
36       trap "kill $SSH_AGENT_PID" 0
37       ssh-add
38     else
39       export SSH_AUTH_SOCK="$SOCKET"
40     fi
41   fi
42   unset RUNNING_AGENT
43 fi
44
45 unset SOCKET
46 unset get_agent_pid