¿Por qué no puedo cambiar el shell con el comando chsh?

12

Aprendí un nuevo comando, al menos pensé, porque este comando: chshno se comporta como se describe.

Fue descrito para trabajar así:

  1. cat /etc/shells para saber qué shells están instalados, para que pueda elegir entre ellos.
  2. hace echo $SHELLsaber, que shell que esté utilizando.
  3. elige una de las conchas y escribe chsh -s /path/to/shell
  4. ingrese la contraseña y verifique con echo $SHELLque está en un nuevo shell.

He hecho esto y no recibí ningún mensaje de error al ingresar la contraseña, pero todavía estaba en el mismo shell.

% echo $SHELL
/bin/bash
% cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
% chsh -s /bin/sh
Password: 
% echo $SHELL
/bin/bash
Sharkant
fuente
55
Primero debe cerrar sesión y volver a iniciar sesión.
Rui F Ribeiro
77
Por favor no publique imágenes del texto del terminal. Se puede copiar y pegar en el cuerpo de su pregunta, y realmente no hay necesidad de publicar imágenes, a menos que muestre una falla gráfica o algo similar.
Sergiy Kolodyazhnyy
Edité mi publicación, eliminé la imagen y pegué el texto en su lugar, pero la imagen volvió durante la noche.
Sharkant
@sharkant Parece que alguien tuvo una edición en una cola de revisión y fue aprobada, lo que editó su publicación después del hecho. Pensé que el sistema de edición SE no sobrescribiría una nueva edición con una anterior, pero, ¿quién sabe?
Zan Lynx

Respuestas:

19

Cerrar sesión e iniciar sesión nuevamente.

El chshcomando actualizará el /etc/passwdarchivo, pero no cambia el shell actual ni el valor de la $SHELLvariable en el shell actual (no tiene forma de hacerlo). Esta es la razón por la que necesita iniciar sesión nuevamente; debe iniciar una nueva sesión de inicio de sesión para que un cambio surta efecto.

Kusalananda
fuente
No entiendo qué es un shell de inicio de sesión y cómo sé si estoy en un shell de inicio de sesión o algún tipo de shell de inicio de sesión. ¿Cómo comienzo una nueva sesión de inicio de sesión?
Sharkant
1
@sharkant El punto es que la información que cambió en el /etc/passwdno se lee hasta que inicie sesión la próxima vez. Tendrá que cerrar sesión por completo e iniciar sesión nuevamente para que el cambio surta efecto. Si no lo hace, reiniciar la máquina también funcionará.
Kusalananda
1
Creo que te entiendo esta vez: ¿entonces el comando chsh -s / path / to / shell no cambia inmediatamente el shell en el que estoy, pero cambia una entrada dentro de / etc / passwd que entrará en vigencia cuando inicie el shell?
Sharkant
@sharkant ¡Así es exactamente como funciona! Estoy feliz de que finalmente entendí tu idea errónea. Actualizaré la respuesta.
Kusalananda
1

Usar el comando de utilidad usermod funcionó en mi caso. Ejecutando en ubuntu 18.04.

  1. Primero, verifique el valor actual

grep nameofuser /etc/passwd

  1. cambialo

sudo usermod --shell /bin/bash nameofuser

  1. Verificarlo

grep nameofuser /etc/passwd

sandip
fuente