Jak używać bash jako domyślnej powłoki

21

Korzystam z El Capitan 10.11.3 z wersją bash 3.x, więc postanowiłem zaktualizować bash poprzez:

brew install bash

Brew umieszcza nową wersję bash pod / 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.

Jak widzisz napar wspomina, że ​​muszę zaktualizować, /etc/shellsaby móc korzystać z nowej wersji bash. Ale po zamknięciu / ponownym otwarciu bieżąca powłoka bash --versionmówi mi, że już używam 4.3.42, więc zastanawiam się, co stało się pod maską, że nowa wersja jest automatycznie używana?

Mikrofon
źródło
Jak zamknąłeś / ponownie otworzyłeś obecną powłokę?
user151019,
@Mark prawym przyciskiem myszy na ikonie terminala -> quit, kliknij lewym przyciskiem myszy na ikonie terminala
Mike

Odpowiedzi:

8

Możesz użyć polecenia chsh, aby zmienić powłokę. W twoim przypadku, w przypadku generowania naparu, powinieneś ustawić go na /usr/local/bin/bash. Należy również umieścić to w /etc/shells.

Co do twojego pytania echo $BASH_VERSION, powie ci wersja bieżącej powłoki. bash --versionpowie ci wersję pierwszego basha w twoim $PATH. Więc sposób, w jaki patrzyłeś na wersję, nie mówił ci, którą wersję uruchomiłeś.

MERM
źródło
Ok, myślę, że rozumiem. Ale czy to nie znaczy, że brew zmodyfikowało moją ścieżkę do put / usr / local / bash to path? Czy w katalogu PATH jest / usr / local / bash domyślny?
Mike
Ok sudo stat -x /etc/pathsmówi mi, że nie został zmodyfikowany przez brew (i tak będziesz potrzebować sudo). Więc to musi być domyślna. I myślę, że masz rację, po wykonaniu kroków echo $ BASH_VERSION zwraca teraz 4.3.42. Dziękuję Merm!
Mike
26
brew install bash
sudo nano /etc/shells

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

# save and quit via kntrl + x

Teraz musisz zobaczyć coś takiego:

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!

Teraz ustaw domyślną powłokę:

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

Teraz zamknij Terminal i otwórz go ponownie! Sprawdź, czy wszystko w porządku?

echo $BASH_VERSION # 4.3.42(1)-release
Vigo
źródło
może nie być oczywiste, ta sama metoda działa również zshi fishmuszle.
Andy