Je déconseille d'installer Bash via Homebrew comme commande bash
ou sh
système. Cependant, il est tout à fait possible de l'utiliser comme shell personnel.
Homebrew propose une installation standard de Gnu Bash. Vous manquerez toutes les extensions d'Apple au shell si vous utilisez les binaires bash
ou sh
fournis par Apple ou le code source du site opensource.apple.com. Tout script shell au niveau du système fourni par Apple peut dépendre de ces extensions et modifications d'Apple pour fonctionner.
Homebrew installe également, par défaut, une version 4.3.x de bash:
> brew info bash
bash: stable 4.3.24 (bottled), HEAD
http://www.gnu.org/software/bash/
Non installé
Depuis: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/bash.rb
==> Dépendances
Requis: readline
==> Avertissements
Pour utiliser cette version de bash comme shell de connexion,
elle doit être ajoutée à /etc/shells.
C'est une version nettement différente de la version 3.2.x fournie avec OS X 10.9.x. Elle n'est pas entièrement rétrocompatible avec les versions antérieures. Par exemple, l'extraction de sous-chaîne indexée par les paramètres positionnels a changé de 3 à 4. Cela pourrait rompre des scripts au niveau du système.
Ces deux raisons peuvent entraîner des scripts système inopérants sur votre Mac si vous passez aux versions Homebrew de bash
et sh
pour autre chose que votre shell personnel. Vous pouvez définir votre shell personnel comme le shell Bash de Homebrew en exécutant :
chsh -s /usr/local/bin/bash
et ensuite vous déconnecter et vous reconnecter. Cela devrait être relativement sûr pour le fonctionnement stable de votre machine.
Si la commande chsh
ci-dessus échoue en disant que /usr/local/bin/bash
n'est pas un shell acceptable, vous devrez l'ajouter à la liste dans /etc/shells
en exécutant :
sudo vim /etc/shells
Il devrait être ajouté sur une nouvelle ligne dans le fichier comme ceci :
> cat /etc/shells
# Liste des shells acceptables pour chpass(1).
# Ftpd n'autorisera pas les utilisateurs à se connecter s'ils n'utilisent pas
# l'un de ces shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh
/usr/local/bin/bash