Cómo cambiar el shell predeterminado a ZSH - chsh dice "shell no válido"


36

Instalé ZSH en una máquina virtual mía, donde lo compilé desde la fuente. La ubicación de ZSH es /usr/local/bin/zshcuando ejecuto chsh -s /usr/local/bin/zshsalidas chsh: /usr/local/bin/zsh is an invalid shell. También probé esto con sudo también. ¿Cómo puedo cambiar esto?


posible duplicado de ¿Dónde cambio mi shell?
Mikel

66
@Mikel, no, esa pregunta es "No sé sobre chsh" en lugar de " chshno está funcionando para mí".
cjm

Respuestas:


48

Agregue zsh a /etc/shells:

command -v zsh | sudo tee -a /etc/shells

Ahora puede usar chsh para establecer zsh como shell:

sudo chsh -s "$(command -v zsh)" "${USER}"

Consulte esta documentación: Cambiar su shell de inicio de sesión



3

Primero, verifique si zshestá listado como un shell válido por

cat /etc/shells

Si zshno está en la lista, instálelo. Por ejemplo, si usasapt

sudo apt-get install zsh

Haz el paso 1 nuevamente y ve el camino de zsh. En mi caso, ambos /usr/bin/zshy /usr/zshestá en la lista. Como @ Stéphane Chazelas mencionó en el comentario, si desea compilar e instalar el shell desde cero, asegúrese de agregar la ruta /etc/shells.

Cambiar el caparazón usando

chsh -s /usr/bin/zsh

Desde la página del manual :

-s, --shell SHELLEl nombre del nuevo shell de inicio de sesión del usuario. Establecer este campo en blanco hace que el sistema seleccione el shell de inicio de sesión predeterminado.

Cerrar sesión e iniciar sesión nuevamente.


Sí, si instala el shell como parte de un paquete del sistema operativo, el paquete del sistema operativo generalmente agregará el shell /etc/shells. El punto aquí es que si compila e instala el shell a mano, también necesita agregar la ruta a /etc/shellsusted mismo a mano.
Stéphane Chazelas

Buen punto. Estaba pensando en un administrador de paquetes como 'apt'. He editado la respuesta para incluir su punto.
Sábado Yam

Sin embargo, esto es esencialmente lo que las otras dos respuestas ya han dicho.
Jeff Schaller
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.