如何使用bash作为默认shell


21

我正在使用bash版本3.x运行El Capitan 10.11.3,因此我决定通过以下方式更新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。但是在关闭/重新打开当前shell之后,bash --version告诉我现在我已经在使用4.3.42,所以我想知道在自动使用新版本的情况下发生了什么?


您如何关闭/重新打开当前shell?
user151019 '16

@Mark右键单击终端图标->退出,左键单击终端图标
Mike

Answers:


8

您可以使用chsh命令更改您的外壳。对于您的情况,对于brew生成的bash,应将其设置为/usr/local/bin/bash。您还应该将其放入/etc/shells

至于您的问题echo $BASH_VERSION将告诉您当前 shell 的版本。bash --version告诉您第一个bash的版本$PATH。因此,您查看版本的方式并没有告诉您正在运行的版本。


好吧,我想我明白了。但这是否意味着brew将我的路径修改为/ usr / local / bash到路径?还是/ usr / local / bash是PATH中的默认值?
迈克,

好的,sudo stat -x /etc/paths告诉我它不是由brew修改的(无论如何,您都将需要sudo)。因此它必须是默认值。我认为您是对的,在执行完步骤后,echo $ BASH_VERSION现在确实返回4.3.42。感谢Merm!
迈克,

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!

现在设置默认的shell:

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

现在退出终端并重新打开它!检查一切还好吗?

echo $BASH_VERSION # 4.3.42(1)-release

可能不太明显,同样的方法也适用于zshand fishshells。
安迪
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.