Por que o Terminal não respeita as preferências?
Em algum momento da semana passada, meu Terminal parou de respeitar a configuração "Novas guias abertas com: Mesmo diretório de trabalho". O teste com "Novas janelas ..." deu o mesmo resultado.
Meu shell é zsh.
Consegui fazer isso funcionar seguindo uma resposta aqui de 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
}
Mas: Eu não sei como eu poderia ter determinado isso por mim mesmo, ou como poderia ter depurado um problema semelhante .
Quaisquer dicas ou truques para descobrir quais são essas etapas iniciais do Terminal seriam muito apreciados.
Coisas que não funcionaram:
- Alternando configurações para nova guia ou nova janela
- Renomear ou adicionar
return
na primeira linha de.zshrc
,.zsh*
arquivos - Todas as sugestões em Abrir nova guia Terminal no diretório de trabalho atual não funcionam
Outras informações potencialmente úteis:
- As configurações de "Mesmo perfil" / "Perfil padrão" são respeitadas quando alteradas
- Adicionando
pwd
como a primeira linha de.zshrc
mostra o diretório já está/home/<myuser>
- Eu instalei e desinstalei algumas ferramentas e projetos envolvendo
nix
recentemente (incluindonix-darwin
)

Metadados:
OS macOS Catalina 10.15.7 (19H2)
Terminal 2.10 (433)
zsh 5.7.1 (x86_64-apple-darwin19.0)
Respostas
Se você clicar em "Sequência de escape ..." nessa captura de tela, verá o seguinte:

O que isso não indica, porém, é que normalmente isso é feito no arquivo /etc/zshrc_Apple_Terminal
, que é chamado de /etc/zshrc
. Existem várias coisas que podem impedir /etc/zshrc_Apple_Terminal
de ser chamado ou que podem substituir o que ele tenta fazer:
- Você está iniciando o Zsh com
zsh -d
ouzsh -f
. - Você tem um arquivo
${ZDOTDIR:-$HOME}/.zshenv
ou${ZDOTDIR:-$HOME}/.zprofile
no qual você temsetopt NO_rcs
ousetopt NO_globalrcs
- O parâmetro
$TERM_PROGRAM
não possui o valorApple_Terminal
. - Zsh não tem acesso de leitura a
/etc/zshrc_Apple_Terminal
. - Quando
/etc/zshrc_Apple_Terminal
obtém fonte, o parâmetro$INSIDE_EMACS
é diferente de zero. - Você define uma função
precmd
algum tempo depois de/etc/zshrc_Apple_Terminal
obter a fonte, que então substitui aquela definida poradd-zsh-hook
.
O que você pode fazer para depurar:
- Inicie um subshell sem arquivos de configuração não globais e veja se o bug também acontece lá:
Se o problema não ocorrer neste subshell, isso significa que o problema está em algum lugar em seus dotfiles não globais. Você pode obter uma lista desses arquivos fazendocd $(mktemp -d); HOME=$PWD ZDOTDIR=$PWD zsh
ls ${ZDOTDIR:-$HOME}/.z(log(in|out)|profile|sh(env|rc))(-^/)
- Reinicie o Zsh com
exec zsh -vx
e estude a saída desde o início para ver se/etc/zshrc_Apple_Terminal
obtém origem e se algo mais tarde substitui oprecmd
gancho que ele configurou.