6 votes

Y a-t-il des inconvénients à utiliser la version brew de bash pour /bin/sh?

J'ai patché bash & sh avec les derniers correctifs comme décrit ici, mais j'ai maintenant des problèmes avec certaines choses dans mes dotfiles (particulièrement le chargement de rvm et certaines fonctions et complétions personnalisées).

Je n'ai pas de problèmes si j'utilise simplement la version de bash de brew à la fois /bin/bash et /bin/sh, mais je me demande si je pourrais rencontrer d'autres problèmes avec des éléments du système.

5voto

shsteimer Points 8749

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X