Ejecutar chsh no cambia el shell

19

Quiero cambiar mi shell de bash a zsh.

Intenté ejecutar lo siguiente mientras estaba conectado como usuario zol:

$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.

# zsh exists in /etc/shells.. 
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

¿Qué podría estar mal? ¿Cómo puedo arreglarlo?

Zolomon
fuente
¿Intentaste ejecutar 'chsh' sin ningún argumento como zol?
George M
¿Estás usando algo como ldap / nis, etc.?
Ulrich Dangel
Mucho más importante: ¿Por qué no te da más información? Ese mensaje podría estar bien para un sysop experimentado pero para la mayoría de las personas es francamente grosero. Estoy enfrentando el mismo problema 5 años después, y la gente se pregunta por qué Linux ha pasado los últimos 20 años no en el escritorio.
flurbius
¿Esperaba que su caparazón cambiara instantáneamente? Cambia de shell de conexión con chsh, lo que significa que tendrá que conectarse de nuevo.
Kusalananda

Respuestas:

17

Las modificaciones de la cuenta de usuario no se guardarán si ha abierto / etc / passwd (vim / etc / passwd) cuando intenta cambiar la información.

Alternativa: intente con usermod (como zol):

$ usermod -s /bin/zsh 

o

$ sudo usermod -s /bin/zsh zol

Si esto tampoco funciona, edite /etc/passwda mano.

sudo vipw
# set zol's shell to /bin/zsh
:wq
fromnaboo
fuente
66
úselo en vipwlugar de vimestablecer los bloqueos de archivo apropiados.
Ulrich Dangel
"Las modificaciones de la cuenta de usuario no se guardarán si ha abierto / etc / passwd", pero ¿por qué?
Thanatos
Tampoco funciona Cuando reinicio la máquina virtual Linux (centos7), ¡está bien ahora!
WeizhongTu
1

Cuándo ejecutar "chsh -l" si quieres ver:

/usr/bin/zsh
/bin/zsh

Luego use:

chsh -s /usr/bin/zsh

Advertencia: Los comandos se ejecutaron en Fedora 25, en ubuntun la opción "-l" está desactivada .

lourencoccc
fuente
-lEs una opción no válida para mí. Estoy en Ubuntu 16.04
byxor
Lo siento, no doy información sobre la distribución donde funcionan los comandos. En mi caso probé en Fedora 25. Probé en ubuntu y verifiqué que la opción "-l" estaba desactivada.
lourencoccc
En cualquier caso, chsh -sfuncionó a la perfección. Gracias.
byxor
La opción es válida en Manjaro pero aún se niega a cambiar el shell.
flurbius
0

Si ve chsh: Shell not changed., podría significar que el shell ya ha cambiado.

Compruebe qué shell está en la lista:

cat /etc/passwd | grep `cd; pwd`

Si es correcto, cierre sesión y vuelva a iniciarla para que el cambio surta efecto.

Código Bling
fuente
0

Acabo de encontrarme con esto. No importa lo que hice al iniciar y cerrar sesión, no cambiaría mi shell; sin embargo, estaba incluido en / etc / shells y / etc / passwd.

finalmente me di cuenta: ¿Tal vez he iniciado sesión con otra sesión?

Así que lo hice

# who

y confirmó que tenía otras sesiones abiertas de otras máquinas:

dom  pts/0        Nov 6 13:53 (10.1.6.121)
dom  pts/1        Nov 5 12:30 (10.1.6.165)
dom  pts/2        Nov 4 12:33 (10.1.6.197)

Entonces hice:

pkill -KILL -u dom

Inmediatamente me desconecté y después de volver a iniciar sesión: ¡Voila! Shell fue cambiado

Dom
fuente