Восстановление слетевшей gpg-agent сессии
Ищет pid запущеного агента (если их несколько, то последнего в списке
процессов), угадывает его сокет, и устанавливает переменные окружения.
Можно оформить как скрипт, но не нравится eval.
#! zsh -f
#
# function gpg-agent-env () {
local pid socket
ps -C gpg-agent -o pid,user --no-headers | tail -1 | \
awk "/$LOGNAME\$/ { print \$1 }" | read pid
if [[ -z $pid ]]; then
print -u2 "no gpg-agent process for current user"
return 1
fi
netstat -A unix -pl 2>/dev/null | \
grep -F "$pid/gpg-agent" | \
sed -e "s#^.\\+$pid/gpg-agent \\+##" | read socket
export GPG_AGENT_INFO="$socket:$pid:1" GPG_TTY=$( tty )
# }
