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 -i
está correto para isso, embora -d
(implícito em -f
) e -i
( zsh
seja 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/zshenv
ainda é interpretado e não acho que haja alguma maneira de desativá-lo. Veja info zsh RCS
para detalhes.
No seu caso, PS1
foi 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 ~/.profile
ou ~/.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 -i
para 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 ~/.zshrc
lugar 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 PS1
variável em algum arquivo de inicialização do sistema e a definem com um valor específico para a sintaxe do bash
shell (o shell GNU), o que significa que se você iniciar qualquer shell diferente de bash
em um ambiente com isso PS1
, você recebe um prompt de lixo.
Para iniciar um shell PS1
removido do ambiente, você pode fazer:
(unset -v PS1; zsh -f)
Com algumas env
implementaçõ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