2
如何使pinentry-curses从正确的tty开始?
我gpg-agent用于管理两个PGP e SSH身份。代理以这样的脚本启动 gpg_agent_env="$XDG_CACHE_HOME/gpg-agent.env" export GPG_TTY="$(tty)" if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then eval "$({gpg-agent --daemon | tee $gpg_agent_env} 2> /dev/null)" else source "$gpg_agent_env" 2> /dev/null fi 每当我运行交互式外壳程序时,该源代码便会提供。使用此设置,一切都可以正常工作,但是存在问题。假设我: 打开终端(在后台启动代理)并开始工作 过一会儿再打开第二个终端 进行需要在第二个终端输入密码的操作 此时gpg-agent将开始pinentry-curses提示密码,但是它将在第一个终端中执行此操作,这将导致其输出与正在运行的内容(通常是文本编辑器)混合在一起,而无法继续执行程序或停止pinentry(它开始使用100%cpu我必须杀死它)。 我一定在这里做错了。有人经历过吗? 更新: 我发现这种情况仅发生在解锁SSH密钥的提示(看起来像这样)中,而PGP密钥的提示总是在正确的(即当前)tty上打开。