diff --git a/plugins/ssh-agent/ssh-agent.plugin.zsh b/plugins/ssh-agent/ssh-agent.plugin.zsh index 9bc2e8a21..acad4e83e 100644 --- a/plugins/ssh-agent/ssh-agent.plugin.zsh +++ b/plugins/ssh-agent/ssh-agent.plugin.zsh @@ -1,5 +1,3 @@ -typeset _agent_forwarding _ssh_env_cache - function _start_agent() { local lifetime zstyle -s :omz:plugins:ssh-agent lifetime lifetime @@ -97,7 +95,23 @@ else _start_agent fi -_add_identities +() { + emulate -L zsh + + command mkdir "$ZSH_CACHE_DIR/ssh-agent.lock" 2>/dev/null || return + + trap " + ret=\$? + + command rm -rf '$ZSH_CACHE_DIR/ssh-agent.lock' + unset _agent_forwarding _ssh_env_cache + unfunction _start_agent _add_identities 2>/dev/null + + return \$ret + " EXIT INT QUIT + + _add_identities +} # tidy up after ourselves unset _agent_forwarding _ssh_env_cache