So verwenden Sie bash als Standardshell

20

Ich verwende El Capitan 10.11.3 mit der Bash-Version 3.x, also habe ich beschlossen, 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 ein Update durchführen /etc/shellsmuss, um die neue Bash zu verwenden. Aber nach dem Schließen / erneuten Öffnen bash --versionsagt mir die aktuelle Shell , dass ich bereits 4.3.42 verwende, und ich frage mich, was unter der Haube passiert ist, dass die neue Version automatisch verwendet wird.

Mike
quelle
Wie haben Sie die aktuelle Shell geschlossen / wieder geöffnet?
user151019
@Mark mit der rechten Maustaste auf das Terminalsymbol klicken -> beenden, mit der linken Maustaste auf das Terminalsymbol klicken
Mike

Antworten:

8

Sie können den Befehl chsh verwenden, um Ihre Shell zu ändern. In Ihrem Fall sollten Sie bei gebrühtem Bash den Wert auf setzen /usr/local/bin/bash. Sie sollten dies auch in setzen /etc/shells.

In Bezug auf Ihre Frage echo $BASH_VERSIONerfahren Sie die Version der aktuellen Shell. bash --versionsagt Ihnen die Version der ersten Bash in Ihrem $PATH. Die Art und Weise, wie Sie die Version betrachteten, sagte Ihnen also nicht, welche Version Sie ausgeführt haben.

MERM
quelle
Ok, ich glaube ich verstehe. Aber heißt das nicht, dass Brew meinen Pfad geändert hat und put / usr / local / bash auf path gesetzt hat? Oder ist / usr / local / bash in PATH voreingestellt?
Mike
Ok sudo stat -x /etc/pathssagt mir, dass es nicht durch Brauen 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. Vielen Dank, Merm!
Mike
25
brew install bash
sudo nano /etc/shells

# add to last line
/usr/local/bin/bash

# save and quit via kntrl + x

Nun 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 jetzt Ihre Standard-Shell fest:

chsh -s /usr/local/bin/bash $USER # this will set for the current user.

Beenden Sie nun das Terminal und öffnen Sie es erneut! Überprüfen Sie, ob alles in Ordnung ist?

echo $BASH_VERSION # 4.3.42(1)-release
Vigo
quelle
Vielleicht ist es nicht offensichtlich, dass diese Methode auch für zshund fishShells funktioniert .
Andy