¿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

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.


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

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.