当我将export GPG_TTY=$(tty)放入.zshrc并重新启动终端窗口并执行时
echo $GPG_TTY上面写着not a tty。
当我通过
source ~/.zshrc && echo $GPG_TTY它正确地报告了/dev/pts/1。
What可以是我的 .zshrc fails,当它的文档显示 .zshrc is用于交互shell初始化时?
以下是我的.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发布于 2020-09-11 07:28:57
tty命令要求stdin连接到终端。当使用Powerlevel10k时,当即时提示被激活并且Zsh被完全初始化时,stdin被从/dev/null重定向。这一点在Powerlevel10k 10k常见问题中有更详细的解释。
要解决这个问题,可以将export GPG_TTY=$(tty)移动到~/.zshrc的顶部,以便在激活即时提示符之前执行,或者(更好!)使用export GPG_TTY=$TTY。后者的版本在任何地方都能工作,而且速度比以前快1000倍以上。TTY是Zsh在初始化过程中很早就设置的一个特殊参数。它允许您访问终端,即使stdin可能被重定向。
发布于 2020-09-10 18:37:12
我解决了这个问题,只是和别人分享而已。
我把export GPG_TTY=$(tty)移到了顶部。特别是在p10k即时提示初始化之上。我不知道,但是如果在执行该脚本之后导出tty,那么tty是不可用的。无论如何,我不是这个领域的专家,但它只是解决了我的问题,我希望它也能为你解决。
https://unix.stackexchange.com/questions/608842
复制相似问题