Como @William dijo en su respuesta, Apple no proporciona bash 4 debido a restricciones de GPL. Sin embargo, puede instalar bash 4+ y también puede convertirlo en su shell predeterminado (incluso para Terminal e iTerm2 ) haciendo lo siguiente.
Instalar Bash 4 a través de Homebrew
Primero instale la versión más reciente de bash. Hay varias formas de hacerlo, prefiero Homebrew.
- Instale Homebrew como se describe en http://brew.sh .
- Instala bash usando
brew install bash
.
Bash 4 ahora está disponible en su RUTA (asumiendo que Homebrew bin está en su camino). Sin embargo, aún no es su shell predeterminado. Puede encontrar dónde se encuentra al ejecutar which bash
. En mi caso es a las /usr/local/bin/bash
.
Usando Bash 4
Como está en su RUTA, puede iniciar una sesión de Bash 4 con solo bash
o se puede usar en scripts utilizando un Shebang .
Por ejemplo, esto usará una instancia de bash específica.
#!/usr/local/bin/bash
...your script...
Esto usará el primer golpe en la RUTA.
#!/usr/bin/env bash
...your script...
También puede establecer la ruta bash para perfiles específicos en Terminal / iTerm2 utilizando los pasos descritos en la respuesta de @ user136952.
Hacer que Bash 4 sea el predeterminado
Como se mencionó anteriormente, después de instalar Bash 4 todavía no es el shell predeterminado. Para que bash sea el valor predeterminado, debe realizar dos pasos más.
Primero, agregue la ruta Bash 4 a su /etc/shells
archivo para que sea un shell de inicio de sesión permitido. Como se describe en / etc / shells , este archivo tiene la lista de shells de inicio de sesión válidos. Después de agregar la nueva ruta de bash, mi /etc/shells
aspecto es el siguiente:
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash
A continuación, usamos chsh para convertirlo en su shell predeterminado. Entonces, cualquier sesión para ese usuario usará ese shell. Puede leer más sobre esto en Change the Shell en Mac OS X Terminal , pero el comando real es muy sencillo.
chsh -s /usr/local/bin/bash
Ahora el nuevo bash es nuestro shell de inicio de sesión predeterminado. Si abre Terminal o iTerm2 y ejecuta bash --version
, debería ver la nueva versión. Tenga en cuenta la "Licencia GPLv3 +", por lo que Apple no la incluye con macOS.
$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.6.0)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>