Ich verwende El Capitan 10.11.3 mit Bash-Version 3.x, also habe ich mich entschieden, Bash zu aktualisieren über:
brew install bash
Brew platziert die neue Bash unter /usr/local/Cellar/bash:
brew info bash
bash: stable 4.3.42 (bottled), devel 4.4-beta, HEAD
Bourne-Again SHell, a UNIX command interpreter
https://www.gnu.org/software/bash/
/usr/local/Cellar/bash/4.3.42 (59 files, 7.3M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/bash.rb
==> Dependencies
Required: readline ✔
==> Caveats
In order to use this build of bash as your login shell,
it must be added to /etc/shells.
Wie Sie sehen können, erwähnt Brew, dass ich aktualisieren /etc/shells
muss, um die neue Bash zu verwenden. Aber nach dem Schließen / erneuten Öffnen der aktuellen Shell bash --version
sagt mir, dass ich jetzt bereits 4.3.42 verwende, also frage ich mich, was unter der Haube passiert ist, dass die neue Version automatisch verwendet wird?
Sie können den Befehl chsh verwenden, um Ihre Shell zu ändern. In Ihrem Fall sollten Sie es mit brew-generiertem Bash auf setzen /usr/local/bin/bash
. Diese sollten Sie ebenfalls eintragen /etc/shells
.
Zu deiner Frage echo $BASH_VERSION
wird dir die Version der aktuellen Shell verraten. bash --version
sagt Ihnen die Version der ersten Bash in Ihrer $PATH
. Die Art und Weise, wie Sie sich die Version angesehen haben, hat Ihnen also nicht die Version mitgeteilt, die Sie ausgeführt haben.
sudo stat -x /etc/paths
sagt mir, dass es nicht von brew modifiziert wurde (Sie werden sowieso sudo brauchen). Es muss also Standard sein. Und ich denke, Sie haben Recht, nachdem Sie Ihre Schritte ausgeführt haben, gibt echo $BASH_VERSION jetzt 4.3.42 zurück. Merm sei Dank!brew install bash
sudo nano /etc/shells
# add to last line
/usr/local/bin/bash
# save and quit via kntrl + x
Jetzt müssen Sie so etwas sehen:
cat /etc/shells
# 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 # we added this!
Legen Sie nun Ihre Standard-Shell fest:
chsh -s /usr/local/bin/bash $USER # this will set for the current user.
Beenden Sie jetzt das Terminal und öffnen Sie es erneut! Überprüfen Sie, ob alles in Ordnung ist?
echo $BASH_VERSION # 4.3.42(1)-release
zsh
und funktioniert.fish
mmmmmm
Mike