Si no puede ejecutar chsh
porque no tiene privilegios de administrador, hable con alguien que sí lo tenga .
Lo más probable es que no pueda usarlo chsh
como no root porque el sistema que está usando está configurado para que chsh
no funcione, por ejemplo, porque el sistema usa NIS o LDAP en lugar de solo el /etc/passwd
archivo. O tal vez el administrador de su sistema solo quiere mantener algo de control.
El procedimiento para cambiar su shell depende de las políticas de su organización. Puede haber un comando local que haga lo que chsh
normalmente hace. O puede que tenga que enviar un ticket de soporte solicitando un cambio de shell.
La mayoría de las otras respuestas son buenas, pero si sus administradores responden razonablemente, es posible que no quiera molestarse en hackear sus scripts de inicio. Probablemente solo invoque zsh -l
manualmente después de iniciar sesión hasta que el administrador pueda actualizar mi cuenta.
Otra cosa a tener en cuenta: a veces, diferentes shells pueden usar los mismos archivos de inicio. Por ejemplo, sh
y bash
puede tanto ejecutar $HOME/.profile
, y csh
y tcsh
ambos pueden ejecutar $HOME/.login
y $HOME/.cshrc
(aunque los archivos de inicio de caparazón específicos como .bashrc
, .bash_profile
y .tcshrc
puede anular los). Si su shell predeterminado es /bin/csh
y desea utilizarlo /bin/tcsh
, actualizar su .login
invocación /bin/tcsh -l
podría crear un bucle infinito. zsh
no ejecuta bash
archivos de inicio específicos, por lo que no es un problema para usted.
La mayoría de las conchas establecen variables que identifican qué shell se está ejecutando ( $BASH_VERSION
, $tcsh
, $ZSH_VERSION
). Si va a escribir un código de inicio para invocar su shell preferido, no es una mala idea encerrarlo de if
manera que se ejecute solo si aún no está ejecutando ese shell. Usando el código de la respuesta de konsolebox :
if [ "${ZSH_VERSION:-unset}" = "unset" ] ; then
export SHELL=/bin/zsh
exec /bin/zsh -l
fi
(La complicación añadida de comprobación "${ZSH_VERSION:-unset}"
en lugar de sólo "$ZSH_VERSION"
admite la posibilidad de que usted ha hecho set -o unset
, una opción que hace que una referencia a una variable no definida para ser un error).
zsh
el.bashrc
archivo. Cerrar sesión e iniciar sesión y listo!