当我放入export GPG_TTY=$(tty)
并.zshrc
重新启动终端窗口并执行时
echo $GPG_TTY
它说not a tty
。
当我来源.zshrc
时
source ~/.zshrc && echo $GPG_TTY
它正确报告/dev/pts/1
。
当我的文档说 tty用于交互式 shell 初始化时,我.zshrc
找不到 tty是什么原因?.zshrc
这是我的.zshrc
内容:
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
export ZSH="/home/ashar/.oh-my-zsh"
export EDITOR=nvim
export GPG_TTY=$(tty)
ZSH_THEME="powerlevel10k/powerlevel10k"
plugins=(git zsh-autosuggestions)
source $ZSH/oh-my-zsh.sh
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
答案1
tty
命令要求 stdin 连接到终端。使用时功率等级10k/dev/null
, stdin 从以下时间重定向即时提示被激活,直到 Zsh 完全初始化。这在中进行了更详细的解释Powerlevel10k 常见问题解答。
要解决此问题,您可以移至export GPG_TTY=$(tty)
顶部,~/.zshrc
以便它在激活即时提示之前执行,或者(更好!)使用export GPG_TTY=$TTY
。后一个版本可以在任何地方工作,并且速度快了 1000 倍以上。TTY
是Zsh在初始化过程中很早就设置的一个特殊参数。即使标准输入可能被重定向,它也可以让您访问终端。
答案2
我就这样解决了,分享给其他人。
我把它移到export GPG_TTY=$(tty)
了顶部。具体就是上面的p10k即时提示初始化。我不知道,但如果我在执行该脚本后导出 tty,则 tty 不可用。无论如何,我不是该领域的专家,但它只是为我解决了问题,我希望它也为您解决问题。