首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >出口GPG_TTY=$( tty )说的不是tty

出口GPG_TTY=$( tty )说的不是tty
EN

Unix & Linux用户
提问于 2020-09-10 18:37:12
回答 2查看 10.8K关注 0票数 19

当我将export GPG_TTY=$(tty)放入.zshrc并重新启动终端窗口并执行时

代码语言:javascript
复制
echo $GPG_TTY

上面写着not a tty

当我通过

代码语言:javascript
复制
source ~/.zshrc && echo $GPG_TTY

它正确地报告了/dev/pts/1

What可以是我的 .zshrc fails,当它的文档显示 .zshrc is用于交互shell初始化时?

以下是我的.zshrc内容:

代码语言:javascript
复制
# 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
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 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可能被重定向。

票数 58
EN

Unix & Linux用户

发布于 2020-09-10 18:37:12

我解决了这个问题,只是和别人分享而已。

我把export GPG_TTY=$(tty)移到了顶部。特别是在p10k即时提示初始化之上。我不知道,但是如果在执行该脚本之后导出tty,那么tty是不可用的。无论如何,我不是这个领域的专家,但它只是解决了我的问题,我希望它也能为你解决。

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/608842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档