Cómo usar Bash en macOS: ¿Cómo cambiar desde Zsh?
En nuestros artículos anteriores, hemos aprendido desde los conceptos básicos de Bash hasta su instalación en Windows con WSL. Esta vez, nos sumergiremos en el mundo de los usuarios de macOS para profundizar nuestros conocimientos y hacer que su entorno de terminal sea aún más cómodo. Si eres un creador web que adora macOS, es posible que al abrir la Terminal te hayas encontrado con el texto desconocido "zsh" y te hayas preguntado: "Espera, ¿esto no es Bash?".
Así es: desde macOS Catalina (lanzado en 2019), el shell predeterminado en Mac ha cambiado de Bash a Zsh (Z Shell). Aunque Zsh es un shell excelente y muy funcional, muchos tutoriales y servidores en todo el mundo todavía se basan en Bash. Por esta razón, no son pocos los que piensan "quiero un entorno Bash para aprender" o "quiero trabajar con el mismo shell que mi servidor".
En este artículo, explicaremos claramente los siguientes puntos para todos ustedes, usuarios de macOS:
- ¿Cuáles son las diferencias básicas entre Zsh y Bash?
- Cómo instalar de forma segura la última versión de Bash en macOS.
- Cómo cambiar tu shell predeterminado de Zsh a Bash (y viceversa) cuando quieras.
¡Al terminar de leer este artículo, tendrás el conocimiento para personalizar libremente tu entorno de terminal en macOS y elegir el shell óptimo para cada proyecto!
Zsh vs. Bash: ¿Cuál es la diferencia?
Primero, tanto Zsh como Bash son un tipo de "shell", lo que significa que son programas interactivos que usamos para dar órdenes al sistema operativo. Muchos de los comandos básicos (como ls, cd, mkdir, etc.) se pueden usar exactamente de la misma manera en ambos shells.
Entonces, ¿por qué Apple cambió de Bash, que fue el estándar durante muchos años, a Zsh? Veamos las principales diferencias y razones.
- Bash (Bourne-Again SHell): El "rey de los shells" por excelencia, que ha sido el estándar en la mayoría de los sistemas Linux y versiones antiguas de macOS. Destaca por su estabilidad, compatibilidad y la abrumadora cantidad de información disponible.
- Zsh (Z Shell): Un shell más moderno y altamente funcional desarrollado como una extensión de Bash. Su atractivo radica en características como una potente función de autocompletado (sugerencia de comandos), corrección ortográfica y una amplia personalización mediante temas.
- El trasfondo del cambio: Una de las principales razones por las que Apple cambió a Zsh está relacionada con las licencias. Las nuevas versiones de Bash (v4.0 y posteriores) usan la licencia GPLv3, y Apple quería evitar sus términos. Como resultado, la versión de Bash incluida en macOS ha permanecido en una versión muy antigua, la 3.2. Por otro lado, Zsh utiliza una licencia más permisiva, lo que permitió a Apple incluir la última versión.
En conclusión, Zsh es casi un superconjunto de Bash, pero no es 100% compatible. La necesidad de usar Bash para coincidir con los entornos de servidor o los scripts existentes sigue estando muy presente.
Paso 1: Instalar la última versión de Bash
Como se mencionó, la versión de Bash que viene de serie con macOS es muy antigua. Primero, instalemos la última versión de Bash usando Homebrew. Homebrew es un práctico gestor de paquetes para macOS.
Abre la Terminal y ejecuta el siguiente comando para instalar Bash. (Si aún no has instalado Homebrew, por favor, hazlo primero).
brew install bash
Esto instalará una nueva versión de Bash gestionada por Homebrew, separada del /bin/bash estándar de macOS. (Normalmente se instala en /usr/local/bin/bash o /opt/homebrew/bin/bash).
Comprobación de la versión
Después de la instalación, comparemos las versiones del Bash antiguo y el nuevo. Primero, comprueba la versión del Bash antiguo y estándar de macOS.
$ /bin/bash --version
GNU bash, version 3.2.57(1)-release ...
A continuación, comprueba la versión del nuevo Bash instalado con Homebrew. (Por favor, ajusta la ruta para que coincida con tu entorno).
$ /opt/homebrew/bin/bash --version
GNU bash, version 5.2.15(1)-release ...
¡Como puedes ver, se ha instalado una nueva versión 5.x de Bash!
Paso 2: Cambiar tu shell predeterminado a Bash
El simple hecho de instalar el nuevo Bash no es suficiente; el shell que se usa al abrir una nueva ventana de la Terminal sigue siendo Zsh. Veamos los pasos para cambiar esto al nuevo Bash que acabamos de instalar.
2-1. Añadir el nuevo Bash a la lista de shells permitidos
Por razones de seguridad, macOS mantiene una lista de programas que los usuarios pueden establecer como su shell predeterminado en un archivo en /etc/shells. Primero, debemos añadir la ruta del Bash instalado por Homebrew a este archivo.
Por favor, ejecuta el siguiente comando. Cuando se te pida una contraseña, introduce la contraseña de inicio de sesión de tu Mac.
sudo sh -c 'echo /opt/homebrew/bin/bash >> /etc/shells'
2-2. Cambiar el shell predeterminado con el comando chsh
Una vez añadido a la lista de permitidos, usa el comando chsh (change shell) para cambiar tu shell de inicio de sesión al nuevo Bash.
chsh -s /opt/homebrew/bin/bash
Después de ejecutar este comando, debes cerrar por completo y volver a abrir la Terminal. A partir de entonces, la Terminal se iniciará con Bash.
Paso 3: Verificación y cómo volver atrás
Una vez que abras una nueva ventana de terminal, comprobemos si el shell ha cambiado realmente a Bash. Ejecuta el siguiente comando.
$ echo $SHELL
/opt/homebrew/bin/bash
Si se muestra la ruta del Bash instalado por Homebrew, ¡el cambio ha sido un éxito!
Cuando quieras volver a Zsh
Si empiezas a extrañar las funciones de Zsh o simplemente quieres volver atrás, es fácil. Solo tienes que usar de nuevo el comando chsh, pero esta vez especificando la ruta a Zsh.
chsh -s /bin/zsh
Después de esto, abre una nueva ventana de terminal y volverás al familiar prompt de Zsh.
Resumen
¡Buen trabajo! En este artículo para usuarios de macOS, hemos explicado cómo cambiar el shell predeterminado del estándar Zsh a la última versión de Bash. Ahora tu Mac es casi idéntico al entorno Bash ampliamente utilizado en el desarrollo web, lo que debería hacer que tu aprendizaje y trabajo sean mucho más fluidos.
Tanto Zsh como Bash son herramientas excelentes, cada una con sus pros y sus contras. Ninguna es absolutamente mejor que la otra. Lo importante es entender las características de cada una y tener el conocimiento para cambiar de entorno en cualquier momento para adaptarte a los requisitos de un proyecto o a tus preferencias personales. ¡Con el artículo de hoy, has adquirido ese poder!
Ahora que tu entorno Bash está listo, el siguiente paso es aprender los comandos básicos de Bash uno por uno. En el próximo artículo, entraremos en detalle sobre los fundamentos de las operaciones de archivos como `cd` y `ls`. Esta es la base para usar Bash, así que esperamos que sigas con nosotros.
Guía de comandos básicos de Bash y cómo usarlos (cd, ls, echo, etc.)