Как использовать bash в качестве оболочки по умолчанию


21

Я использую El Capitan 10.11.3 с версией bash 3.x, поэтому я решил обновить bash через:

brew install bash

Brew помещает новый bash в / 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.

Как видите, brew упоминает, что мне нужно обновить /etc/shells, чтобы использовать новый bash. Но после закрытия / повторного открытия текущая оболочка bash --versionговорит мне, что теперь я уже использую 4.3.42, поэтому мне интересно, что произошло под капотом, что новая версия автоматически используется?


Как вы закрывали / открывали текущую оболочку?
user151019

@ Марк правой кнопкой мыши на значке терминала -> выйти, щелкните левой кнопкой мыши на значке терминала
Майк

Ответы:


8

Вы можете использовать команду chsh для изменения вашей оболочки. В вашем случае, с bash, сгенерированным bash, вы должны установить его на /usr/local/bin/bash. Вы должны также вставить это /etc/shells.

По вашему вопросу echo $BASH_VERSIONвам сообщат версию текущей оболочки. bash --versionговорит вам версию первого bash в вашем $PATH. Таким образом, то, как вы смотрели на версию, не сообщало вам версию, на которой вы работали.


Хорошо, я думаю, я понимаю. Но разве это не значит, что brew изменил мой путь путём / usr / local / bash to path? Или в PATH по умолчанию используется / usr / local / bash?
Майк

Ok sudo stat -x /etc/pathsговорит мне, что он не был изменен brew (вам все равно понадобится sudo). Так что это должно быть по умолчанию. И я думаю, что вы правы, после выполнения ваших шагов echo $ BASH_VERSION теперь возвращает 4.3.42. Спасибо Мерм!
Майк

26
brew install bash
sudo nano /etc/shells

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

# save and quit via kntrl + x

Теперь вам нужно увидеть что-то вроде этого:

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!

Теперь установите оболочку по умолчанию:

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

Теперь выйдите из Терминала и снова откройте его! Проверьте, все ли в порядке?

echo $BASH_VERSION # 4.3.42(1)-release

не может быть очевидным , этот же метод работает zshи fishснарядов.
Энди
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.