¿Cómo puedo iniciar un zsh interactivo sin ejecutar ningún archivo de configuración como .zshrc
?
Lo intenté zsh -d -f -i
, pero el mensaje era el mismo que el especificado en ~/.zshrc
, por lo que esas opciones no parecen haber funcionado.
Estoy ejecutando zsh 5.8 en macOS 10.15.4.
Respuesta1
zsh -d -f -i
es correcto para eso, aunque -d
(implícito en -f
) y -i
( zsh
se ejecuta interactivamente de todos modos cuando no se proporciona ningún script/código para ejecutar en la línea de comando y stdin es una terminal) sería redundante.
Sin embargo, tenga en cuenta que eso /etc/zsh/zshenv
todavía se interpreta y no creo que haya ninguna forma de desactivarlo. Ver info zsh RCS
para más detalles.
En su caso, PS1
fue heredado del entorno. PS1
es una de las muchas variables de entorno que también pueden personalizar el shell.
Tenga en cuenta que los primeros shells no tenían un archivo rc, la personalización se realizaba solo con variables de entorno (que se configuraban en ~/.profile
or ~/.login
, interpretadas por el shell de inicio de sesión).
Hay una gran cantidad de variables que se utilizan para configurar el shell. Ver:
info zsh 'Parameters Used By The Shell'
para obtener más detalles (tenga en cuenta que, para algunos de ellos, se ignora el valor encontrado en el entorno).
Algunas de esas variables de entorno, como HOME
, PATH
, SHELL
, COLUMNS
, son utilizadas por muchos LANG
otros LC_*
programas además del shell, por lo que no es una buena idea desarmarlas o usarlas env -i
para desarmarlas todas.
La mayoría de las variables enumeradas en esa documentación no querrás colocarlas en el entorno, sino declararlas en tu ~/.zshrc
lugar como variables de shell normales. PS1
es uno de ellos. PS1
se utiliza como variable de personalización de solicitud en muchos shells, pero la sintaxis varía mucho entre shells.
Desafortunadamente, algunas distribuciones GNU/Linux configuran y exportan la PS1
variable en algún archivo de inicio del sistema y la definen con un valor específico de la sintaxis del bash
shell (el shell GNU), lo que significa que si inicia cualquier shell que no sea bash
en un entorno con eso PS1
, aparece un mensaje de basura.
Para iniciar un shell PS1
eliminado del entorno, puede hacer:
(unset -v PS1; zsh -f)
Con algunas env
implementaciones, también puedes hacer:
env -u PS1 zsh -f
Para iniciarlo sin ninguna variable de entorno (aunque, como se indicó anteriormente, probablemente no sea una buena idea):
env -i zsh -f