mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-02-13 03:01:32 +01:00
Even though commit 711e96b1a2 fixed
checking for gpg-agents already running, there was one pre-existing
problem due to which my gpg-agents were still spawning multiple times.
The only thing missing was exporting the variables sourced from the
environment file.
Even though double checking for the agent, before and after (possible)
sourcing, seems redundant to me, I'm keeping it in and only fixing
that one thing.
41 lines
1.2 KiB
Bash
41 lines
1.2 KiB
Bash
local GPG_ENV=$HOME/.gnupg/gpg-agent.env
|
|
|
|
function start_agent_nossh {
|
|
eval $(/usr/bin/env gpg-agent --quiet --daemon --write-env-file ${GPG_ENV} 2> /dev/null)
|
|
chmod 600 ${GPG_ENV}
|
|
export GPG_AGENT_INFO
|
|
}
|
|
|
|
function start_agent_withssh {
|
|
eval $(/usr/bin/env gpg-agent --quiet --daemon --enable-ssh-support --write-env-file ${GPG_ENV} 2> /dev/null)
|
|
chmod 600 ${GPG_ENV}
|
|
export GPG_AGENT_INFO
|
|
export SSH_AUTH_SOCK
|
|
export SSH_AGENT_PID
|
|
}
|
|
|
|
# check if another agent is running
|
|
if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
|
|
# source settings of old agent, if applicable
|
|
if [ -f "${GPG_ENV}" ]; then
|
|
. ${GPG_ENV} > /dev/null
|
|
export GPG_AGENT_INFO
|
|
export SSH_AUTH_SOCK
|
|
export SSH_AGENT_PID
|
|
fi
|
|
|
|
# check again if another agent is running using the newly sourced settings
|
|
if ! gpg-connect-agent --quiet /bye > /dev/null 2> /dev/null; then
|
|
# check for existing ssh-agent
|
|
if ssh-add -l > /dev/null 2> /dev/null; then
|
|
# ssh-agent running, start gpg-agent without ssh support
|
|
start_agent_nossh;
|
|
else
|
|
# otherwise start gpg-agent with ssh support
|
|
start_agent_withssh;
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
GPG_TTY=$(tty)
|
|
export GPG_TTY
|