function find-ssh-agent --description "find or run ssh-agent" # let's avoid storing the agent's socket under /tmp set -l ssh_auth_sock $XDG_RUNTIME_DIR/ssh-agent.sock if set -q SSH_AGENT_PID; and set -q SSH_AUTH_SOCK # if variables already defined, then try to connect to agent ssh-add -l &>/dev/null test $status -ne 2; and return end set -l user_id (id -u) set -l ssh_agent_pid (pgrep --exact --newest --uid $user_id ssh-agent) if test -S $ssh_auth_sock set --global --export SSH_AUTH_SOCK $ssh_auth_sock set --global --export SSH_AGENT_PID $ssh_agent_pid else eval (ssh-agent -c -a $ssh_auth_sock) end end