My minimalist shell setup — Bash in Terminal and Zsh in iTerm2

2 pairs of separate shell environments

The Terminal Application

Popular terminal applications on MacOS are:

  • Terminal (MacOS built in)
  • iTerm2 (most popular and my goto, written in Objective-C )
  • Hyper (yet another popular one, an Electron-based terminal)

The Shell

Keep Bash as the default shell for Terminal

Keep the default setup as your plan B. If you happen to change it to one of the fancy shells (zsh, fish), I’d suggest switching back to bash to maximize the benefits of compatibility, stability, and availability.

# use bash as default - recommended chsh -s /bin/bash# use zsh as default - still popular but I am not a fun of thischsh -s /bin/zsh
Change user’s login shell via UI

Use Zsh in iTerm2 for fancy functionality

  1. Install Homebrew 👉
  2. Install Zsh brew install zsh & zsh --version
  3. Install On My Zsh:
  4. Use Zsh in iTerm2, Preferences > Profiles > General Tab > Command > Choose “Custom Shell” > input /bin/zsh
use zsh as iTerm2 default shell

The Theme

  1. Install my favourite Nerd Fonts — Hack
brew tap homebrew/cask-fontsbrew install --cask font-hack-nerd-font
Choose Hack Nerd Font in iTerm2

The Plugins

  1. oh my zsh:
  2. zsh auto suggestion:
  3. zsh auto highlight:

The Prompt

I have a customised prompt for zsh, check it out 👉 My minimalist prompt setup on zsh + oh-my-zsh

To Recap

  • Have two separate shell environments — one for stability, one for usability
  • Zsh in iTerm2 as the primary shell environment
  • Bash in Terminal as the secondary shell environment



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store