Est-il possible de mettre à jour bash vers la version 4.0 dans OSX Yosemite?
echo $BASH_VERSION
3.2.57(1)-release
Cet article et ce fil renvoient à la même question, mais ils installent un nouveau shell côte à côte avec l'ancien. Existe-t-il un moyen de mettre à jour directement l’ancien shell bash?
macos
terminal
bash
command-line
sluijs
la source
la source
Réponses:
Apple ne mettra pas à jour Bash, car la dernière version est sous licence GPLv3, qu’Apple ne peut utiliser. Ils ont cependant mis à jour la plupart de leurs autres coquilles. ZSH par exemple est la plupart du temps à jour.
Références:
Après quelques recherches, cela semble être le problème principal:
Cela nécessiterait que les logiciels de source fermée, par exemple, rendent leurs parties sous licence GPL modifiables par le public, ce qui serait évidemment un problème pour Apple.
la source
bash
. La clause "Tivoization" pourrait expliquer pourquoibash
on ne peut pas mettre à jour une Apple TV, par exemple, mais pas vraiment un Mac de bureau. De plus, les "portions sous GPL" devraient déjà être rendues modifiables par le public; v3 ne changerait pas cela. Je pense que la clause brevets de la GPL v3 serait suffisante pour dissuader Apple de toucher au code GPL v3.Est-il possible de mettre à jour bash vers la version 4.0 dans OSX Yosemite? Oui.
Téléchargez / installez homebrew http://brew.sh/ en exécutant cette commande dans le terminal.
Quittez et rouvrez votre terminal. puis tapez
Changez le shell par défaut via l'interface graphique du terminal avec le chemin littéral de votre nouveau bash (EDIT: je n'ai pas encore trouvé de solution de type CLI qui fonctionne)
Est-il possible de mettre à jour bash avec la version 4.0 fournie par Apple dans OSX Yosemite?
EDIT: Non. Pas de la façon dont l’opérateur demande. Par exemple, mettez à niveau l’installation actuelle en vous substituant elle-même. Il a été noté dans d'autres réponses qu'Apple n'avait pas mis à jour bash en raison de problèmes de licence. Cependant, télécharger une version séparée et mise à jour de bash et l'utiliser comme shell par défaut est la solution canonique pour la plupart des interprètes. Prenez python par exemple. Vous ne mettez pas la version 2.7 à la version 3.5, vous téléchargez une version distincte et modifiez votre valeur par défaut.
la source
sudo chpass -s /usr/local/bin/bash
. Remarque: Il est préférable de pointer sur le lien symbolique de/usr/local/bin/
cette manière, afin que Brew puisse gérer les mises à niveau sans avoir à modifier votre environnement à chaque fois.sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'
puischsh -s /usr/local/bin/bash
définira le shell par défaut pour le terminalComme @William l'a dit dans sa réponse, Apple ne fournit pas le bash 4 en raison des restrictions de la GPL. Vous pouvez cependant installer bash 4+ et en faire votre shell par défaut (y compris pour Terminal et iTerm2 ) en procédant comme suit.
Installez Bash 4 via Homebrew
Commencez par installer la nouvelle version de bash. Il y a différentes façons de le faire, je préfère Homebrew.
brew install bash
.Bash 4 est maintenant disponible sur votre PATH (en supposant que Homebrew bin est sur votre chemin). Cependant, ce n'est pas encore votre shell par défaut. Vous pouvez trouver où il se trouve en exécutant
which bash
. Dans mon cas c'est à/usr/local/bin/bash
.Utiliser Bash 4
Comme il se trouve sur votre PATH, vous pouvez démarrer une session Bash 4 simplement
bash
ou vous pouvez l’utiliser dans des scripts en utilisant un Shebang .Par exemple, cela utilisera une instance spécifique de bash.
Cela utilisera la première bash sur le chemin.
Vous pouvez également définir le chemin bash pour des profils spécifiques dans Terminal / iTerm2 en suivant les étapes décrites dans la réponse de @ user136952.
Faire de Bash 4 la valeur par défaut
Comme mentionné ci-dessus, après l’installation de Bash 4 n’est toujours pas le shell par défaut. Pour que bash soit la valeur par défaut, vous devez effectuer deux autres étapes.
Tout d’abord, ajoutez le chemin Bash 4 à votre
/etc/shells
fichier pour qu’il s’agisse d’un shell de connexion autorisé. Comme décrit dans / etc / shells , ce fichier contient la liste des shells de connexion valides. Après avoir ajouté le nouveau chemin bash, on/etc/shells
dirait que:Ensuite, nous utilisons chsh pour en faire votre shell par défaut. Ainsi, toutes les sessions de cet utilisateur utiliseront ce shell. Pour plus d'informations à ce sujet, reportez-vous à la section Modification du shell dans Terminal Mac OS X , mais la commande en question est très simple.
Maintenant, le nouveau bash est notre shell de connexion par défaut. Si vous ouvrez Terminal ou iTerm2 et exécutez,
bash --version
vous devriez voir la nouvelle version. Notez la "Licence GPLv3 +" qui explique pourquoi Apple ne l’associe pas avec macOS.la source
sudo chpass -s /usr/local/bin/bash
change mon shell pour root / sudo uniquement. Pour changer pour mon identifiant habituel, je dois exécuter la commande sanssudo
. Cela pourrait être une chose Active Directory; Je ne suis pas sûr.#!/usr/local/bin/bash
shebang, examinez l'utilisation#!/usr/bin/env bash
( explication ). Cela exécutera le script avec n'importe quelle version de bash accessible par l'environnement qui le lance, c'est-à-dire tout ce quiwhich bash
revient. C'est une solution plus portable que d'utiliser des chemins spécifiques. Nous ne pouvons pas nous attendre à ce que d'autres utilisateurs installent bash via homebrew.Vous pouvez installer une autre version de Bash sans homebrew
Et suivez les étapes ici: https://gist.github.com/samnang/1759336
Téléchargez et installez la version de bash que vous voulez Remplacez XX (dans bash-XX) par la version de votre choix, par exemple 4.4
Vous voudrez peut-être ajouter un alias si vous voulez que la commande bash l'utilise. Placez dans votre ~ / .bash_profile
la source
L'installation côte à côte avec une mise à jour de votre shell (via chsh ou l'interface graphique) échouera pour les scripts. Les scripts utilisent souvent
env bash
, ce qui revient à la version OS X bash. Donc, ce que vous voulez peut ne pas être la mise à jour complète de bash, mais une installation côte à côte qui renvoie toujours la version la plus récente de bash (c.-à-d. Même quandenv
est appelé).Donc, pour gérer ça:
1) installer bash via Homebrew, comme l’ont indiqué les autres commentateurs
2) paramétrez votre shell de connexion sur cette nouvelle version (via l'interface graphique ou la commande chsh comme d'autres l'ont postée)
3) définissez
/usr/local/bin
(ou le chemin de la nouvelle version de bash) devant/bin
votre variable $ PATH, en ajoutant ceci à votre~/.bash_profile
:export PATH=/usr/local/bin:$PATH
la source
.bash_profile
toute façon, de sorte que cela n’affectera que ce que vous exécuterez directement dans un terminal.2019: aussi simple que dans ce post
puis onglet un nouveau terminal, profitez-en!
la source