cod*_*101 7 arch-linux zsh tty gpg
我正在尝试使用 gpg 设置 git commit 签名。我已经正确设置了一切。我唯一的问题是,当我把export GPG_TTY=$(tty)我.zshrc和重启新的Konsole窗口,并把echo $GPG_TTY它说not a tty。当我再次.zshrc通过放置source ~/.zshrc然后回显从同一窗口获取my 时$GPG_TTY,它会正确报告/dev/pts/1. .zshrc当它的文档说它zshrc用于交互式 shell 初始化时,我找不到 tty可能是什么原因。
这是我的 .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
Run Code Online (Sandbox Code Playgroud)
Rom*_*tsa 19
tty命令要求标准输入连接到终端。使用Powerlevel10k 时,从激活Instant Prompt到完全初始化 Zsh/dev/null时重定向标准输入。这在Powerlevel10k FAQ中有更详细的解释。
要解决此问题,您可以移动export GPG_TTY=$(tty)到顶部~/.zshrc以便它在激活即时提示之前执行,或者(更好!)使用export GPG_TTY=$TTY. 后一个版本可以在任何地方使用,而且速度要快 1000 多倍。TTY是 Zsh 很早就在初始化期间设置的特殊参数。即使标准输入可能被重定向,它也能让您访问终端。
我就这样解决了,分享给其他人。
我把它移到了export GPG_TTY=$(tty)顶部。具体就是上面的p10k即时提示初始化。我不知道,但如果我在执行该脚本后导出 tty,则 tty 不可用。无论如何,我不是该领域的专家,但它只是为我解决了问题,我希望它也为您解决问题。