De forma predeterminada, el Mac usa zsh o bash como intérprete de la línea de comandos para el shell interactivo y el shell de inicio de sesión:
- zsh (Z shell) es el shell predeterminado para todas las cuentas de usuario nuevas, a partir de la versión de macOS Catalina.
- bash es el shell predeterminado en macOS Mojave y versiones anteriores.
zsh es altamente compatible con el shell Bourne (sh) y es compatible en gran medida con bash, exceptuando algunas diferencias. Para obtener más información sobre zsh y su sistema de autocompletado de la línea de comandos, escribe man zsh en Terminal.

Cómo cambiar el shell predeterminado
Si tu cuenta de usuario está configurada para usar zsh (recomendado), bash u otro shell, puedes cambiar el shell predeterminado en las preferencias de Usuarios y grupos o en la línea de comandos.
En las preferencias de Usuarios y grupos
- Selecciona el menú Apple > Preferencias del Sistema y, a continuación, haz clic en Usuarios y grupos.
- Haz clic en el candado
y, a continuación, escribe el nombre de la cuenta y la contraseña. - Pulsa Control y haz clic en tu nombre de usuario, en la lista de usuarios de la izquierda, y elige Opciones avanzadas.
- Elige un shell en el menú “Shell de inicio de sesión” y haz clic en Aceptar para guardar los cambios.

En la línea de comandos
En Terminal, escribe $ chsh -s path, donde path es una de las rutas de shell que se enumeran en /etc/shells, por ejemplo, /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh o /bin/tcsh.

Cómo utilizar un shell diferente sin cambiar el predeterminado
Si no quieres que Terminal utilice el shell de inicio de sesión predeterminado en las ventanas y pestañas nuevas de Terminal:
- Abre Terminal y selecciona Terminal > Preferencias.
- En el panel General, selecciona “Comando (ruta completa)”.
- En el campo que se habilita, escribe una de las rutas de shell que se enumeran en /etc/shells, por ejemplo, /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh o /bin/tcsh.

Si invocas el shell bash y macOS Catalina está configurado para utilizar un shell diferente, verás un mensaje que indica que el shell interactivo predeterminado ahora es zsh. Para que no se muestre esta advertencia, puedes añadir este comando a ~/.bash_profile o ~/.profile:
export BASH_SILENCE_DEPRECATION_WARNING=1
Cómo cambiar a un perfil y símbolo del sistema de zsh
Si utilizas un perfil de bash, por ejemplo, para establecer variables de entorno, alias o variables de ruta, deberás utilizar el equivalente en zsh. Por ejemplo:
- .zprofile equivale a .bash_profile y se ejecuta en el inicio de sesión, incluso a través de SSH.
- .zshrc equivale a .bashrc y se ejecuta para cada sesión de Terminal nueva.
Si utilizas .profile (un perfil compatible con POSIX), puedes añadir este comando a .zprofile para hacer que zsh lea automáticamente los ajustes:
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
También puedes trasladar algunos ajustes de un perfil de bash a un perfil de zsh sin modificarlos. Por ejemplo, para establecer variables de entorno: export MY_SETTING=1.
zsh reconoce un conjunto de especificadores de símbolo del sistema diferente de bash y su sintaxis para especificar salidas en color es más sencilla, pues no necesita utilizar secuencias de escape ANSI complejas. Por ejemplo, esta es la sintaxis de un símbolo del sistema de bash predeterminado de .bash_profile:
export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "
Para convertirlo en un símbolo del sistema de zsh cuando se utiliza .zprofile o .zshrc:
export PS1="%10F%m%f:%11F%1~%f \$ "
Para obtener más información, consulta la página man de zsh.
Cómo probar tus scripts del shell
Para probar si los scripts son compatibles con los shells compatibles con Bourne en macOS Catalina, puedes cambiar /var/select/sh por /bin/bash, /bin/dash o /bin/zsh. Si cambias /var/select/sh por un shell distinto de bash, ten en cuenta que los scripts que usan comandos de bash pueden no funcionar correctamente.
Para hacer que zsh emule a sh, puedes ejecutar el comando zsh --emulate sh.

