I am a long time user of Zsh but I also use Bash now and then but mostly when running bash scripts. The other day when upgrading SdkMan it complained that I was using an old version of bash. I have to admit that I have used the default bash installation in MacOS. What I didn’t know was that Apple will not update Bash, because the latest version is licensed under GPLv3, which Apple cannot use. But now was the time to upgrade to the latest bash version. With Homebrew it’s super easy.
Print current version
$ bash -version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
Print location of current bash
$ command -v bash
/bin/bash
Install bash via homebrew
$ brew install bash
Make sure /usr/local/bin
is in your path before /bin
for zsh use .zprofile
path=(
/usr/local/{bin,sbin}
$path[@]
)
and for bash use .bashrc
or .profile
export PATH=/usr/local/bin:$PATH
Reload your current shell if you changed the path
$ exec $SHELL -l
Print version of our newly installed bash
$ bash -version
GNU bash, version 5.0.3(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Print location of bash
$ command -v bash
/usr/local/bin/bash
Add our installed bash to the list of available login shells
$ sudo bash -c 'echo "$(command -v bash)" >> /etc/shells'
Print the list of available shells and make sure our version is there
$ 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
Change your profile to use the new bash shell
$ chsh -s $(command -v bash)
Print your profile and make sure you are using the new bash as shell
$ dscl . -read /Users/$(whoami) UserShell
UserShell: /usr/local/bin/bash
That’s it. Start a new terminal and use bash 5 or whatever version is the lastest 😀
comments powered by Disqus