96 votes

La mise à jour de Bash via Homebrew est-elle sûre ?

Je suis nouveau sur OS X. J'utilise OS X Lion sur un MacBook Pro. Est-il possible de mettre à jour le shell bash en utilisant Homebrew ?

$ brew install bash

Si c'est le cas, comment puis-je en faire l'instance par défaut du shell que j'exécute via le Terminal ?

Merci !

2 votes

Cette question est soudain devenue extrêmement pertinente, voir Shellshock

0 votes

Oui. 10 chapitres

121voto

Daniel Points 32917

Binaires en /{,usr/}{,s}bin/ ne doivent généralement pas être remplacés par d'autres fichiers. Les autres programmes s'attendent à ce qu'il s'agisse des versions fournies avec OS X, et elles sont remplacées par les mises à jour de l'OS.

Après avoir exécuté brew install bash vous pouvez modifier l'interpréteur de commandes par défaut en toute sécurité :

  • Ajout de /usr/local/bin/bash a /etc/shells
  • Running chsh -s /usr/local/bin/bash .

Les paramètres dans Terminal ou iTerm 2 ne doivent normalement pas être modifiés. Tous deux ouvrent par défaut les nouvelles fenêtres avec un shell de connexion du shell par défaut.

L'interpréteur de commandes par défaut peut également être modifié à partir des Préférences Système ou avec dscl, mais ces trois options ne font que modifier les éléments suivants /var/db/dslocal/nodes/Default/users/$USER.plist .

0 votes

Il semble que cela ait fonctionné, et si je rencontre des problèmes, il devrait être facile de revenir en arrière ! Merci à tous !

0 votes

Je ne savais pas que cette page d'options avancées existait. C'est chouette !

3 votes

La partie concernant l'édition /etc/shells pour inclure le bash installé par brew est nécessaire. Sinon (du moins sur ma machine), Terminal refusera de démarrer.

8voto

kevin9794 Points 4062

Je peux me tromper, mais d'après ce que je sais. brew installerait sa propre instance de bash puisque Brew fonctionne sous /usr/local/bin alors que le système par défaut fonctionne sous /bin (et /usr/bin ).

À propos de Terminal, vous pouvez faire en sorte que les shells s'ouvrent avec votre propre commande personnalisée. Allez dans Préférences > Démarrage et sélectionnez Les coquilles s'ouvrent avec : Commande (chemin complet) . Tapez simplement le chemin d'accès à votre nouvelle bash et vuala !

J'espère que cela vous aidera !

BTW : Sauvegarde ! Le meilleur conseil dans cette situation !

0 votes

Hey, vous savez quoi, cette réponse fonctionne comme un charme

2voto

jplindstrom Points 563

Bien avant de faire quoi que ce soit, sauvegardez votre fichier actuel (bien sûr, mais cela mérite toujours d'être dit)

sudo cp /bin/bash /bin/bash.3.2.bk

Ensuite, créez un lien symbolique vers l'exécutable bash que Homebrew a téléchargé. Je pense qu'il sera dans /usr/local/Cellar, comme ceci

sudo ln -s /usr/local/Cellar/bash/4.2.10/bin/bash /bin/bash

Maintenant /bin/bash pointe vers le fichier dans votre répertoire usr/local

3 votes

L'inconvénient de remplacer la version système par un nouveau bash est que toute mise à jour du système d'exploitation peut effacer votre shell préféré. On peut supposer que l'utilisateur souhaite utiliser de nouvelles fonctionnalités qui pourraient être interrompues si le système d'exploitation installait une version de bash "plus récente que l'ancien système d'exploitation" mais "plus ancienne que la version personnalisée". Il est préférable de changer le chemin par défaut ou de modifier la variable shell de l'utilisateur.

0 votes

Vous pourriez simplement créer un nouveau simlink car il n'écraserait pas la version de bash dans votre répertoire usr/local. mais vous avez raison, la méthode de Daniel est probablement meilleure.

0 votes

Ooh - modifiez votre réponse s'il vous plaît pour mettre cela en premier (et gardez l'idée originale si vous préférez comme deuxième alternative - je l'aime beaucoup mieux et j'aimerais avoir l'occasion d'inverser mon vote :-)

0voto

Gianluca Casati Points 101

Je pense que c'est sûr si vous lancez juste

brew install bash

et ensuite l'ajouter comme shell par défaut

chsh -s /usr/local/bin/bash

puisque vous ne modifiez que votre utilisateur actuel. Cependant, j'ai remarqué que ma méthode par défaut ~/.profil est

if [ "/bin/bash" == $BASH ]; then
    source ~/.bashrc
fi

il doit donc être mis à jour. Je l'ai changé en

if [ "bash" == $(basename $BASH) ]; then
        source ~/.bashrc
fi

0 votes

Voir d'autres réponses à pourquoi chsh ne suffit pas. De plus, votre extrait de fichier .profile mis à jour semble identique à l'original.

0 votes

@patrix : merci de le signaler, j'ai mis à jour le deuxième extrait. Ce serait bien si brew install bash ne nécessiterait aucune autre action. Avec le profil mis à jour que j'ai partagé, ce n'est pas le cas. J'espère que cela pourra aider d'autres personnes.

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