Inicie o zsh interativo sem executar nenhum arquivo de configuração como .zshrc

Inicie o zsh interativo sem executar nenhum arquivo de configuração como .zshrc

Como posso iniciar um zsh interativo sem executar nenhum arquivo de configuração como .zshrc?

Eu tentei zsh -d -f -i, mas o prompt foi o mesmo especificado em ~/.zshrc, então essas opções não parecem ter funcionado.

Estou executando o zsh 5.8 no macOS 10.15.4.

Responder1

zsh -d -f -iestá correto para isso, embora -d(implícito em -f) e -i( zshseja executado interativamente de qualquer maneira quando não for fornecido nenhum script/código para execução na linha de comando e stdin for um terminal) seria redundante.

Observe, no entanto, que isso /etc/zsh/zshenvainda é interpretado e não acho que haja alguma maneira de desativá-lo. Veja info zsh RCSpara detalhes.

No seu caso, PS1foi herdado do ambiente. PS1é uma das muitas variáveis ​​de ambiente que também podem personalizar o shell.

Observe que os primeiros shells não tinham arquivo rc, a personalização era feita apenas com variáveis ​​de ambiente (que você definia no ~/.profileou ~/.login, interpretadas pelo shell de login).

Há um grande número de variáveis ​​usadas para configurar o shell. Ver:

info zsh 'Parameters Used By The Shell'

para obter detalhes (observe que para alguns deles, o valor encontrado no ambiente é ignorado).

Algumas dessas variáveis ​​de ambiente, como HOME, PATH, SHELL, COLUMNS, LANG, LC_*são usadas por muitos outros programas além do shell, portanto, não é uma boa ideia desmarcá-las ou usá-las env -ipara desmarcá-las todas.

A maioria das variáveis ​​listadas nessa documentação você não gostaria de colocar no ambiente, mas declare-as em seu ~/.zshrclugar como variáveis ​​normais do shell. PS1é um deles. PS1é usado como variável de personalização de prompt em muitos shells, mas a sintaxe varia muito entre os shells.

Infelizmente, algumas distribuições GNU/Linux definem e exportam a PS1variável em algum arquivo de inicialização do sistema e a definem com um valor específico para a sintaxe do bashshell (o shell GNU), o que significa que se você iniciar qualquer shell diferente de bashem um ambiente com isso PS1, você recebe um prompt de lixo.

Para iniciar um shell PS1removido do ambiente, você pode fazer:

(unset -v PS1; zsh -f)

Com algumas envimplementações, você também pode fazer:

env -u PS1 zsh -f

Para iniciá-lo sem variável de ambiente (embora, como mencionado acima, provavelmente não seja uma boa ideia):

env -i zsh -f

informação relacionada