How to change bash versions on Mac with Homebrew
Tags: macos, bash, homebrew, tutorial
Published: 2020-03-04 00:18:24

---
title: How to change bash versions on Mac with Homebrew
published: true
description: step-by-step guide to upgrading the version of bash that runs on your Mac.
tags: macos, bash, homebrew, tutorial 
---

MacOS comes with bash 3 as the default shell program; [Apple doesn't want to upgrade to the later versions for intellectual property reasons](https://en.wikipedia.org/wiki/GNU_General_Public_License#Legal_barrier_to_app_stores). This means that some features of later versions of bash, like associative arrays, are not available with the default shell. You can always install later versions yourself, however. 

Setting up my Mac to run a different version of bash in the terminal was surprisingly hard for me to figure out how to do; it's a pretty straightforward process but I didn't see any one resource describing the entire thing from start to finish, so I'm doing it here. 

This is based on my own experience installing bash 5.0.16, using Homebrew 2.2.7, on MacOS Mojave 10.14.6. If this doesn't work for you, let me know in the comments (including the versions of bash, Homebrew, and MacOS), and what if anything did end up working. I'd love to make it applicable to more people. 

# Prerequisites 

This tutorial assumes some basic familiarity using the terminal on Mac. 

You should have the Homebrew package manager installed -- see [this article](https://treehouse.github.io/installation-guides/mac/homebrew) for instructions. 

There's some basic editing with vim -- [this article](https://www.cyberciti.biz/faq/linux-unix-vim-save-and-quit-command/) contains everything you need here, but it's basically just knowing `i` for "insert" and `esc`+ `:wq` + `return` to save changes. 

# Check your current version

Verify that you have the old version installed currently:

```sh
$  echo $BASH_VERSION
3.2.57(1)-release
```

# Install the latest bash version using Homebrew

Use `$ brew install bash` to install the latest version (or [specify a version](https://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula)). Take note of where in the filesystem the cask is located, you'll see a message like this:

```sh
==> Pouring bash-5.0.16.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/bash/5.0.16: 150 files, 9.4MB
```

Take a look at that folder: 

```sh
$ ls /usr/local/Cellar/bash/5.0.16
AUTHORS			NEWS			changelog
CHANGES			NOTES			include
COPYING			README			lib
INSTALL_RECEIPT.json	bin			share
$ ls /usr/local/Cellar/bash/5.0.16/bin
bash	bashbug
```

The full path to the shell we want is (in this case) `/usr/local/Cellar/bash/5.0.16/bin/bash`. Make a note of it for the next step. 


# Set the default shell 

There are two steps to changing this. First, find the "shells" file and edit it: 

```sh
$ atom /etc/shells  # or whatever your preferred text editor is
``` 

Add the full path (in this case `/usr/local/Cellar/bash/5.0.16/bin/bash`) to the end of the list of shells, then save and quit. This will tell your computer that it is safe to use that shell (it's a safety measure to prevent people from accidentally setting random programs as their default shell and breaking everything). 

Back in your command line, use the "change shell" command:

```sh
$ chsh
Changing shell for <user>.
Password for <user>:
```
Enter your password. You'll then get file like this in Vim: 

```
# Changing user information for <user>.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Shell: /bin/bash
Full Name: 
Office Location:
Office Phone:
Home Phone:
~
~
```
Change the entry after "shell" to the new shell path, then save and exit. 


# Check installation 

You may need to open a new terminal window or tab for this to work. 

```
$ echo $BASH_VERSION
5.0.16(1)-release
```

🥳 Yay! 🥳 You can now use new features from bash 4 and 5. And you can always put the default shell back using `chsh` if you want.