Cómo Cambiar el Shell Predeterminado en Linux

Imagen de Característica de Cambio de Shell Predeterminado en Linux

Un shell es la interfaz a través de la cual puedes comunicarte con tu sistema Linux. Te permite escribir comandos y controlar tu computadora. Cada usuario de Linux tiene un shell predeterminado, que en la mayoría de los casos es bash. También hay muchas otras opciones disponibles, incluyendo Zsh, ksh, rc y fish. Aquí te mostramos los diversos métodos para cambiar tu shell predeterminado en Linux.

Tabla de Contenidos

  • Cómo Encontrar el Nombre de tu Shell Actual
  • Listar Todos los Shells Instalados
  • Cambiar el Shell Predeterminado en Linux Usando Chsh
  • Cambiando el Shell de Otro Usuario
  • Cambiar el Shell Predeterminado en Linux Usando Usermod
  • Cambiando Manualmente el Shell Predeterminado en Linux
  • Alternativa a Tu Shell Predeterminado

Cómo Encontrar el Nombre de tu Shell Actual

Antes de sumergirnos en cambiar el shell predeterminado, es bueno saber qué shell estás utilizando actualmente. Puedes averiguarlo revisando la variable de entorno del sistema usando el siguiente comando echo:

echo $SHELL

Este comando imprimirá la ruta de tu shell actual, como /bin/bash o /bin/zsh.

El archivo /etc/passwd contiene información importante sobre las cuentas de usuario. También puedes usar este archivo para encontrar tu shell actual:

grep "^${USER}" /etc/passwd

También puedes encontrar más información sobre el shell actual revisando el ID de proceso (PID), usando el comando ps:

ps -p $$

Esta salida confirma que el shell actual es bash.

Listar Todos los Shells Instalados

Ahora que conoces tu shell actual, es posible que desees ver qué otras opciones están disponibles en tu sistema. Para localizar todos los shells instalados en tu sistema, necesitas echar un vistazo al archivo /etc/shells.

Utilicemos el comando cat para ver una lista de todos los shells disponibles en tu sistema:

cat /etc/shells

listando todos los shells instalados en el sistema Linux Ubuntu

Esto te dará una idea de qué shells puedes cambiar. También puedes instalar cualquier nuevo shell usando tu gestor de paquetes y usarlo como tu shell predeterminado.

Además, puedes probar estos shells listados temporalmente sin cambiar tu shell predeterminado. Para iniciar una nueva sesión de shell, simplemente escribe el nombre del shell en la terminal.

Por ejemplo, para probar el shell Zsh, escribe:

zsh

Esto te permite experimentar con diferentes shells antes de decidir hacer un cambio permanente.

Cambiar el Shell Predeterminado en Linux Usando Chsh

La forma más sencilla de cambiar el shell predeterminado en Linux es usar el comando chsh. El comando chsh significa “cambiar shell”, y se usa junto con la opción -s seguida de la ruta de tu shell.

Si no conoces la ruta de tu shell, entonces ejecuta type zsh en la terminal para obtener la ruta deseada. Después de obtener la ruta de tu shell, puedes cambiar tu shell predeterminado a tu shell específico.

Por ejemplo, si deseas cambiar a Zsh, necesitas usar chsh -s con la ruta del shell Zsh:

chsh -s /bin/zsh

Se te pedirá que ingreses tu contraseña. Una vez que lo hagas, necesitarás cerrar sesión y volver a iniciar sesión para confirmar los cambios.

El comando chsh cambiará el shell de inicio de sesión predeterminado de forma permanente. Puedes verificar los cambios ejecutando este comando:

grep "^${USER}" /etc/passwd

Cambiando el Shell de Otro Usuario

Si tienes privilegios de root y la capacidad de usar el comando sudo, puedes cambiar el shell predeterminado para otras cuentas de usuario. Esto puede ser útil si deseas proporcionar un entorno de shell diferente, como fish, para otro usuario.

Puedes usar la misma sintaxis del comando chsh con un parámetro adicional que especifique el nombre de usuario de la cuenta que deseas modificar.

Por ejemplo, para cambiar el shell de otro usuario a Zsh, ejecuta este comando en la terminal:

sudo chsh -s /bin/zsh user

Este comando le dice al sistema que cambie el shell predeterminado para el usuario específico al shell Zsh, que se encuentra en /bin/zsh.

Cambiar el Shell Predeterminado en Linux Usando Usermod

Otro método para cambiar de shell es usando el comando usermod. Este comando se utiliza para modificar cuentas de usuario, y también se puede usar para cambiar el shell predeterminado.

Para cambiar tu shell predeterminado usando usermod, abre una terminal con privilegios de root y escribe este comando:

sudo usermod -s /path/to/new/shell your_username

Aquí, necesitas reemplazar /path/to/new/shell con la ruta del shell deseado y your_username con tu nombre de usuario real.

Por ejemplo, cambiemos el shell bash predeterminado a zsh:

sudo usermod -s /bin/zsh user

Al igual que antes, cierra sesión y vuelve a iniciar sesión en tu sistema Linux para que estos cambios surtan efecto.

Puedes verificar el cambio al nuevo shell mirando los detalles de la cuenta de usuario con el siguiente comando:

getent passwd user

Cambiando Manualmente el Shell Predeterminado en Linux

También puedes cambiar el shell predeterminado manualmente editando el archivo /etc/passwd. Puedes hacer esto reemplazando la ruta del shell predeterminado con el nuevo shell. Sin embargo, ten cuidado con esta técnica, ya que puede llevar a problemas si no se hace correctamente.

Para cambiar manualmente tu shell, abre el archivo /etc/passwd usando tu editor de texto favorito (como nano o vim) con privilegios de root:

sudo nano /etc/passwd

Busca tu nombre de usuario en el archivo. El último campo en la entrada de tu usuario mostrará tu shell actual. Cámbialo a la ruta de tu shell deseado.

Por ejemplo, cambiemos nuestra ruta de shell predeterminado /bin/bash a /bin/zsh:

cambiando el shell bash predeterminado a zsh en el editor de texto /etc/passwd.

Por último, guarda el archivo presionando Ctrl + S y sal del editor con Ctrl + X. Nuevamente, cierra sesión y vuelve a iniciar sesión para aplicar los cambios.

Alternativa a Tu Shell Predeterminado

Si bien Bash es una herramienta de scripting excelente y poderosa, hay varios otros shells que pueden mejorar tu experiencia en la línea de comandos y proporcionar mejores opciones de personalización:

Fish

fish se refiere a Friendly Interactive Shell. Este shell tiene una interfaz de línea de comandos intuitiva, con resaltado de sintaxis, autocompletado y sugerencias que facilitan la escritura de comandos.

fish también incluye una herramienta de configuración basada en la web. Esto significa que puedes ajustar configuraciones y crear funciones sin profundizar en archivos de configuración.

Zsh

Zsh, o Z shell, es altamente personalizable y tiene muchas características útiles. Algunas de sus mejores características incluyen globbing, autocorrección, configuraciones personalizadas y autocompletado avanzado.

Zsh también admite complementos y temas, lo que facilita adaptar tu experiencia de shell a tu gusto. Con Zsh, también puedes mostrar tu rama de Git y realizar manipulaciones de archivos complejas con patrones simples.

Ksh

ksh, o KornShell, toma las mejores características del shell C y del shell Bourne, convirtiéndolo en un shell poderoso y fácil de usar con capacidades avanzadas de scripting. Algunas características de ksh incluyen funciones matemáticas integradas, edición de línea de comandos, scripting de shell y extensibilidad.

Conclusión

Cambiar tu shell predeterminado en Linux es un proceso sencillo que puede mejorar tu experiencia en la línea de comandos. Si eres un usuario avanzado, definitivamente deberías probar otros shells alternativos de Linux.

Crédito de la imagen: Lukas a través de Unsplash. Todas las capturas de pantalla por Haroon Javed.