Cambiar la shell de un usuario en Linux con chsh

Aprendemos a cambiar la shell de un usuario por defecto en GNU/Linux con la herramienta chsh. Al final cada maestrillo tiene su librillo, por lo que veremos diferentes formas de obtener el mismo fin. Recordar, que en todos los sistemas like-UNIX, como es el caso de todas las distribuciones GNU/Linux, se pueden utilizar diferentes shell, donde destacan las siguientes:

Las 5 mejores shell para GNU/Linux

Una vez tenemos decidido cual vamos a utilizar, cuando creamos un nuevo usuario podemos indicar la que utilizará. En el caso del comando para crear usuarios useradd, tenemos que utilizar el parámetro -s, de la siguiente forma:

useradd -c "Usuario de prueba" -s "/bin/bash" usuario

De esta forma indicamos que el usuario utilizará la shell de Bash.

En cambio, si tenemos un usuario ya creado, le podemos cambiar la shell o terminal a utilizar, con el comando usermod, como sigue:

usermod -s "/bin/csh" usuario

De esta forma el usuario utilizará en este caso la shell Csh.

Utilizar la herramienta chsh

Otra opción interesante es utilizar la herramienta chsh. Su propósito es cambiar la shell de inicio de sesión. Al utilizarla, si no se proporciona una shell en la línea de comandos, chsh solicita una.

La herramienta chsh aceptará la ruta completa de cualquier archivo ejecutable en el sistema. Sin embargo, emitirá una advertencia si la shell no aparece en la lista del fichero /etc/shells.

Veamos un ejemplo de uso, imaginemos que queremos utilizar la shell de Korn, con el binario ubicado en la ruta /bin/ksh, deberíamos ejecutar la siguiente línea:

chsh -s /bin/ksh usuario

Por ejemplo:

[root@servcentos ~]# chsh -s /bin/ksh david
Cambiando intérprete de órdenes para david.
Se ha cambiado el intérprete de órdenes.

Podemos comprobar que efectivamente hemos cambiado de shell, escribiendo:

cat /etc/passwd | grep -i david
david:x:6650:6650::/home/david:/bin/ksh

Los parámetros principales de esta herramienta son -s o —shell, para indicar la shell a utilizar, además de -l o —list-shells, que nos indica las disponibles, que son las mismas del fichero /etc/shells.

Y esto es todo. Espero que esta entrada os sea de utilidad en algún momento.

Para más información, como siempre, podéis consultar la correspondiente página de man:

Chsh man page