Cómo cambiar la shell por defecto en Ubuntu usando chsh

Visión general

En cualquier distribución GNU/Linux moderna, cada cuenta de usuario dispone de un entorno de línea de comandos predeterminado al iniciar sesión. En esta guía desglosamos el funcionamiento del comando chsh (Change Shell), analizando paso a paso cómo interactúa con los archivos de configuración /etc/shells y /etc/passwd para gestionar y alternar entre distintos intérpretes de comandos de forma segura.

Identificación del entorno actual y shells admitidas en el sistema

Para averiguar cuál es el intérprete que gestiona la sesión interactiva del usuario actual, consultamos el valor almacenado en la variable de entorno correspondiente mediante echo $SHELL.
La salida confirma que el perfil activo tiene asignado /bin/bash como entorno predeterminado.

Consulta de la variable SHELL activa

Antes de proceder con cualquier modificación, conviene consultar el archivo /etc/shells para conocer la lista de ejecutables homologados por el sistema operativo. Ejecutamos cat /etc/shells para inspeccionar dichas rutas.
El listado muestra alternativas estándares como /bin/sh y /bin/bash, garantizando que únicamente binarios válidos puedan ser asignados como shell de login.

Listado de shells válidas en /etc/shells

Instalación de Zsh y comprobación de rutas ejecutables

Tomaremos como ejemplo práctico la adopción de zsh. Para descargar e incorporar este intérprete al sistema, ejecutamos el aprovisionamiento de paquetes con sudo apt-get update -qq && sudo apt-get install -y zsh.

Instalación del paquete zsh mediante apt

Una vez completada la instalación en el equipo, localizamos la ruta absoluta del binario generado mediante el comando which zsh.
El sistema reporta que el ejecutable ha quedado debidamente registrado en /usr/bin/zsh.

Localización de la ruta de zsh mediante which

A continuación, verificamos si el paquete recién incorporado ha sido añadido de manera automática al listado de shells seguras mediante el filtro grep -E 'bash|zsh' /etc/shells.
Al figurar tanto /bin/zsh como /usr/bin/zsh en /etc/shells, confirmamos que el sistema autoriza su asignación mediante la utilidad chsh.

Comprobación de zsh en /etc/shells

Modificación del intérprete de comandos mediante chsh

Identificamos primero el usuario sobre el que se aplicará la modificación recurriendo a id -un.
El retorno confirma que estamos operando directamente sobre la cuenta privilegiada root.

Verificación de la cuenta de usuario con id

Para modificar la shell de acceso asignada al usuario actual, ejecutamos chsh -s $(which zsh).
La herramienta procesa el cambio de inmediato sin emitir mensajes de error, configurando /usr/bin/zsh como el nuevo intérprete estándar.

Cambio de shell activa con chsh

Comprobamos la persistencia del cambio inspeccionando el registro del usuario en la base de datos de cuentas locales con grep "^$(whoami):" /etc/passwd.
El séptimo y último campo de la línea refleja ahora /usr/bin/zsh, certificando que las futuras sesiones del usuario iniciarán automáticamente en Zsh.

Inspección del cambio reflejado en /etc/passwd

Mecanismo de actualización y retorno al entorno original

Para revertir la configuración y regresar al entorno estándar de Ubuntu tras la práctica, invocamos nuevamente el comando indicando la ruta clásica: chsh -s /bin/bash.
La instrucción finaliza en silencio, restableciendo de manera limpia /bin/bash como el entorno predeterminado.

Restablecimiento de Bash como shell predeterminada

Confirmamos una vez más la coherencia del archivo /etc/passwd repitiendo la consulta con grep "^$(whoami):" /etc/passwd.
El campo final expone nuevamente /bin/bash, lo que asegura el retorno exitoso y seguro al estado inicial del sistema.

Validación de la restauración en /etc/passwd

El comando chsh constituye el mecanismo nativo más fiable para personalizar el entorno de trabajo en Linux, garantizando siempre que cualquier modificación respete las políticas de seguridad del sistema antes de plasmarse en /etc/passwd. Configurar tu shell preferida te permitirá optimizar tus flujos de trabajo en terminal con total confianza.