diff options
author | Franck Cuny <franck@fcuny.net> | 2023-02-20 19:08:57 -0800 |
---|---|---|
committer | Franck Cuny <franck@fcuny.net> | 2023-02-21 12:59:08 -0800 |
commit | 1fe21928c76b04775f40b49b74ba91ebec1be40e (patch) | |
tree | 063e1ede6fa4c7ed84e51b20164aae13b2e38da0 /home/shell/fish/functions/find-ssh-agent.fish | |
parent | feat(home/pass): add passage (diff) | |
download | world-1fe21928c76b04775f40b49b74ba91ebec1be40e.tar.gz |
feat(home/fish): move fish's code to external files
It's easier to edit / debug / test the code that way. This also add a new function (`find-ssh-agent') to find or start a new ssh agent when a shell is started.
Diffstat (limited to '')
-rw-r--r-- | home/shell/fish/functions/find-ssh-agent.fish | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/home/shell/fish/functions/find-ssh-agent.fish b/home/shell/fish/functions/find-ssh-agent.fish new file mode 100644 index 0000000..9e2de8d --- /dev/null +++ b/home/shell/fish/functions/find-ssh-agent.fish @@ -0,0 +1,20 @@ +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 |