zshrc export GPG_TTY = $ (tty) dice che non è un tty
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
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.
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.