So verwenden Sie Bash als Standard-Shell

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/shellsmuss, um die neue Bash zu verwenden. Aber nach dem Schließen / erneuten Öffnen der aktuellen Shell bash --versionsagt 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?

Wie haben Sie die aktuelle Shell geschlossen/wieder geöffnet?
@Mark Rechtsklick auf das Terminalsymbol -> Beenden, Linksklick auf das Terminalsymbol

Antworten (2)

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_VERSIONwird dir die Version der aktuellen Shell verraten. bash --versionsagt 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.

Ok ich glaube ich verstehe. Aber bedeutet das nicht, dass Brew meinen Pfad geändert und /usr/local/bash in den Pfad eingefügt hat? Oder ist /usr/local/bash standardmäßig in PATH?
Ok sudo stat -x /etc/pathssagt 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
ist möglicherweise nicht offensichtlich, dass dieselbe Methode auch für Shells zshund funktioniert.fish