zshrc export GPG_TTY = $ (tty) dice che non è un tty

Sep 10 2020

Sto cercando di impostare la firma del commit git utilizzando gpg. Ho impostato tutto correttamente. L'unico problema che ho è quando ho messo export GPG_TTY=$(tty)nel mio .zshrce riavviare una nuova finestra Konsole e put echo $GPG_TTY, si dice not a tty. Quando provo nuovamente il mio .zshrcdalla stessa finestra inserendo source ~/.zshrce poi echo $GPG_TTY, segnala correttamente /dev/pts/1. Cosa potrebbe essere che il mio .zshrcnon riesca a trovare tty quando la sua documentazione dice che zshrcè usato per l'inizializzazione della shell interattiva.

Ecco i miei contenuti .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

Risposte

9 RomanPerepelitsa Sep 11 2020 at 07:28

ttyIl comando richiede che stdin sia collegato a un terminale. Quando si utilizza Powerlevel10k , lo stdin viene reindirizzato da /dev/nullquando viene attivato Instant Prompt e fino a quando Zsh non è completamente inizializzato. Questo è spiegato in maggior dettaglio nelle FAQ di Powerlevel10k .

Per risolvere questo problema è possibile spostarsi export GPG_TTY=$(tty)all'inizio di in ~/.zshrcmodo che venga eseguito prima dell'attivazione di Instant Prompt o (meglio!) Utilizzare export GPG_TTY=$TTY. L'ultima versione funzionerà ovunque ed è oltre 1000 volte più veloce. TTYè un parametro speciale impostato da Zsh molto presto durante l'inizializzazione. Ti dà accesso al terminale anche quando stdin potrebbe essere reindirizzato.

2 coder3101 Sep 10 2020 at 18:37

L'ho risolto così, condividendolo con gli altri.

Ho spostato export GPG_TTY=$(tty)in alto. In particolare sopra l'inizializzazione del prompt istantaneo di p10k. Non lo so, ma se esporto tty dopo che lo script è stato eseguito, tty non è disponibile. Comunque, non sono un esperto nel campo, ma risolve il problema per me e spero lo faccia anche per te.