zshrc export GPG_TTY=$(tty) 表示不是 tty

zshrc export GPG_TTY=$(tty) 表示不是 tty

当我放入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 不可用。无论如何,我不是该领域的专家,但它只是为我解决了问题,我希望它也为您解决问题。

相关内容