zshrc 내보내기 GPG_TTY=$(tty)는 tty가 아님을 의미합니다.

zshrc 내보내기 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가 대화형 쉘 초기화에 사용된다고 나와 있는데 .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 FAQ.

이 문제를 해결하려면 인스턴트 프롬프트를 활성화하기 전에 실행되도록 export GPG_TTY=$(tty)맨 위로 이동하거나 (더 좋습니다!) 를 사용할 수 있습니다 . 후자 버전은 어디에서나 작동하며 1000배 이상 빠릅니다. Zsh가 초기화 프로세스 초기에 설정하는 특수 매개변수입니다. 표준 입력이 리디렉션되더라도 터미널에 대한 액세스를 제공합니다.~/.zshrcexport GPG_TTY=$TTYTTY

답변2

이렇게 해결해서 다른 사람들과 공유했습니다.

export GPG_TTY=$(tty)위쪽으로 옮겼어요 . 구체적으로는 위의 p10k 인스턴트 프롬프트 초기화입니다. 잘 모르겠지만 스크립트를 실행한 후 tty를 내보내면 tty를 사용할 수 없습니다. 저는 이 분야의 전문가는 아니지만 제 문제가 해결되었으니 여러분도 문제가 해결되기를 바랍니다.

관련 정보