Cambio de shell predeterminado en Linux [cerrado]

318

¿Cómo es posible cambiar el shell predeterminado? El envcomando actualmente dice:

SHELL=/bin/tcsh

y quiero cambiar eso a Bash.

mahmood
fuente
44
Esta es una buena pregunta, pero podría ser más apropiada para el sitio de control de calidad de Linux.
BradleyDotNET
66
configúrelo

Respuestas:

415

Prueba el comando linux chsh.

El comando detallado es chsh -s /bin/bash. Le pedirá que ingrese su contraseña. Su shell de inicio de sesión predeterminado es /bin/bashahora. Debe cerrar sesión y volver a iniciarla para ver este cambio.

Lo siguiente se cita de la página del manual:

El comando chsh cambia el shell de inicio de sesión del usuario. Esto determina el nombre del comando de inicio de sesión inicial de los usuarios. Un usuario normal solo puede cambiar el shell de inicio de sesión para su propia cuenta, el superusuario puede cambiar el shell de inicio de sesión para cualquier cuenta

Este comando cambiará el shell de inicio de sesión predeterminado de forma permanente.

Nota: Si su cuenta de usuario es remota, como en la autenticación Kerberos (por ejemplo, Enterprise RHEL), no podrá usarla chsh.

Summer_More_More_Tea
fuente
10
chsh: can only change local entries; use ypchsh instead. Entonces ypchsh no tiene ninguna -sopción
mahmood
10
@ShaktiMalik Creo que el archivo de configuración es /etc/passwd, pero no lo revisé dos veces .
Summer_More_More_Tea
30
Debe cerrar sesión y volver a iniciarla para ver este cambio.
Neil Traft
22
En mi caso, tenía acceso de root pero no quería meterme con ninguna configuración en el host real. He añadido exec /bin/basha ~/.profilelo que permitió que me registre directamente a fiesta sin hacer ningún cambio en el servidor. (El shell predeterminado original era solo /bin/sh)
Paul Nelson Baker
2
@BCqrstoO Gracias por esto. Pero, ¿y si exitescribes bash? ¿Cerrará sesión en el servidor directamente o simplemente saldrá de bash y entrará en el sh y se exitrequiere otro para cerrar sesión en el servidor?
Summer_More_More_Tea
148

Puede cambiar el archivo passwd directamente para el usuario en particular o usar el siguiente comando

chsh -s /usr/local/bin/bash username

Luego cierre sesión e inicie sesión

Hielo del desierto
fuente
8
Probablemente sea una buena idea probar which bashantes de invocar el comando anterior; su kilometraje puede variar según la ubicación. En mi caso, fue encontrado en/bin/bash
Martin Haeberli
También puedo agregar que, el chshcomando es parte del util-linuxpaquete; y chsh -s $(which bash) $USERdebería resultar igual que el anterior.
También hay una -lopción: "imprimir lista de conchas".
Betlista
3
fue chsh -s /bin/bash usernamepara mí
Salvatorelab
¡Gracias! Esto me ayudó cuando trataba de cambiarlo para un usuario diferente
Tobias Feil
18

Debería tener un 'esqueleto' en algún lugar /etc, probablemente /etc/skeleton, o verificar la configuración predeterminada, probablemente /etc/defaulto algo así. Esos son scripts que definen variables de entorno estándar que se configuran durante un inicio de sesión.

Si es solo para su propia cuenta: verifique el archivo (oculto) ~/.profiley ~/.login. O generarlos, si no existen. Estos también son evaluados por el proceso de inicio de sesión.

arkascha
fuente
55
Plus 1 por responder específicamente a la pregunta (THE Default Shell). En Red Hat Linux se especifica en/etc/default/useradd
geedoubleya
@geedoubleya ¿Puede especificar cuál es la diferencia en el shell predeterminado y de inicio de sesión?
Betlista
1
Hola @Betlista El shell predeterminado es el shell que se utiliza para un nuevo shell de inicio de sesión de usuarios cuando se crean a menos que se proporcione un shell específico como argumento.
geedoubleya