Perché Terminal non rispetta le preferenze?
Qualche volta nell'ultima settimana il mio terminale ha smesso di onorare l'impostazione "Nuove schede aperte con: stessa directory di lavoro". Il test con "Nuove finestre ..." ha dato lo stesso risultato.
La mia shell è zsh.
Sono stato in grado di farlo funzionare seguendo una risposta qui da Dan Rosenstark https://apple.stackexchange.com/a/340778/398648
# http://superuser.com/a/315029/4952
# Set Apple Terminal.app to resume directory... still necessary 2018-10-26
if [[ $TERM_PROGRAM == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]] {
function chpwd {
local SEARCH=' '
local REPLACE='%20'
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
printf '\e]7;%s\a' "$PWD_URL"
}
chpwd
}
Ma: non so come avrei potuto determinarlo da solo, o come avrei potuto eseguire il debug di un problema simile .
Eventuali suggerimenti o trucchi per capire quali sono questi passaggi iniziali di Terminal sarebbero molto apprezzati.
Cose che non hanno funzionato:
- Commutazione delle impostazioni per Nuova scheda o Nuova finestra
- Rinominare o l'aggiunta
returnalla prima linea di.zshrc,.zsh*file - Tutti i suggerimenti nella scheda Apri nuovo terminale nella directory di lavoro corrente non funzionano
Altre informazioni potenzialmente utili:
- Le impostazioni "Stesso profilo" / "Profilo predefinito" vengono rispettate quando vengono modificate
- Aggiungendo
pwdcome prima riga di.zshrcspettacoli la directory è già/home/<myuser> - Ho installato e disinstallato alcuni strumenti e progetti che coinvolgono
nixrecentemente (inclusonix-darwin)
Metadati:
OS macOS Catalina 10.15.7 (19H2)
Terminal 2.10 (433)
zsh 5.7.1 (x86_64-apple-darwin19.0)
Risposte
Se fai clic su "Sequenza di escape ..." in quella schermata, vedrai quanto segue:
Ciò che questo non ti dice, però, è che questo è normalmente curato nel file /etc/zshrc_Apple_Terminal, che viene chiamato da /etc/zshrc. Ci sono diverse cose che possono impedire /etc/zshrc_Apple_Terminaldi essere chiamato o che possono sovrascrivere ciò che tenta di fare:
- Stai iniziando Zsh con
zsh -dozsh -f. - Hai un file
${ZDOTDIR:-$HOME}/.zshenvo${ZDOTDIR:-$HOME}/.zprofilein cui haisetopt NO_rcsosetopt NO_globalrcs - Il parametro
$TERM_PROGRAMnon ha il valoreApple_Terminal. - Zsh non ha accesso in lettura a
/etc/zshrc_Apple_Terminal. - Quando
/etc/zshrc_Apple_Terminalviene acquisito, il parametro$INSIDE_EMACSè diverso da zero. - Si definisce una funzione
precmdqualche tempo dopo che/etc/zshrc_Apple_Terminalviene originata, che quindi sovrascrive quella definita daadd-zsh-hook.
Cosa puoi fare per eseguire il debug:
- Avvia una subshell senza file di configurazione non globali e verifica se il bug si verifica anche lì:
Se il problema non si verifica in questa subshell, significa che il problema è da qualche parte nei tuoi dotfile non globali. Puoi ottenere un elenco di questi file facendocd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zshls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/) - Riavvia Zsh con
exec zsh -vxe studia l'output dall'inizio per vedere se/etc/zshrc_Apple_Terminalviene prelevato e se qualcosa in seguito sovrascrive l'precmdhook impostato.