Zsh · macOS Setup Guide (2024)

The Z shell (also known as zsh) is a Unix shell that is built on top of bash(the default shell for macOS) with additional features. It's recommended to usezsh over bash. It's also highly recommended to install a framework withzsh as it makes dealing with configuration, plugins and themes a lot nicer.

We've also included an env.sh file where we store our aliases, exports, pathchanges etc. We put this in a separate file to not pollute our mainconfiguration file too much. This file is found in the bottom of this page.

Install zsh using Homebrew:

brew install zsh

Now you should install a framework, we recommend to use Oh My Zshor Prezto. Note that you shouldpick one of them, not use both.

The configuration file for zsh is called .zshrc and lives in your homefolder (~/.zshrc).

Oh My Zsh

Oh My Zsh is an open source,community-driven framework for managing your zsh configuration. It comeswith a bunch of features out of the box and improves your terminal experience.

Install Oh My Zsh:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

The installation script should set zsh to your default shell, but if itdoesn't you can do it manually:

chsh -s $(which zsh)

Configuration

The out-of-the-box configuration is usable but you probably want to customiseit to suit your needs. The Official Wikicontains a lot of useful information if you want to deep dive into what youcan do with Oh My Zsh, but we'll cover the basics here.

To apply the changes you make you need to either start new shell instanceor run:

source ~/.zshrc

Plugins

Add plugins to your shell by adding the name of the plugin to the pluginarray in your .zshrc.

plugins=(git colored-man-pages colorize pip python brew osx)

You'll find a list of all plugins on the Oh My Zsh Wiki.Note that adding plugins can cause your shell startup time to increase.

zsh-syntax-highlighting

The Syntax Highlighting plugin adds beautiful colors to the commands you are typing.

Clone the zsh-syntax-highlighting plugin’s repo and copy it to the “Oh My ZSH” plugins directory.

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
zsh-autosuggestions

This plugin auto suggests any of the previous commands. Pretty handy! To select the completion, simply press → key.

Clone the zsh-autosuggestions plugin’s repo and copy it to the “Oh My ZSH” plugins directory.

git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
Enforce Changes

To apply the changes you make you need to either start new shell instanceor run:

source ~/.zshrc

Themes

Changing theme is as simple as changing a string in your configuration file.The default theme is robbyrussell. Just change that value to change theme,and don't forget to apply your changes.

ZSH_THEME=pygmalion

You'll find a list of themes with screenshots on theOh My Zsh Wiki.

Prezto

Prezto is a configuration frameworkfor zsh; it enriches the command line interface environment with sanedefaults, aliases, functions, auto completion, and prompt themes.

Install Prezto:

git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

Next create your ~/.zshrc by running:

setopt EXTENDED_GLOBfor rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" done

For more information on customisation visit the GitHub repository forPrezto.

Modules

Add modules to Prezto by editing ~/.zpreztorc and adding the modules asstrings to the list:

zstyle ':prezto:load' pmodule \ 'environment' \ 'terminal' \ 'editor' \ 'history' \ 'directory' \ 'spectrum' \ 'utility' \ 'completion' \ 'git' \ 'syntax-highlighting' \ 'history-substring-search' \ 'prompt'

And don't forget to apply your changes by starting a new shell instance.

Themes

To list all available themes run:

prompt -l

Then open up your config file (~/.zpreztorc) and change to the theme you want:

zstyle ':prezto:module:prompt' theme 'minimal'

env.sh

To include env.sh, open ~/.zshrc and add the following:

source ~/<path to file>/env.sh

This file comes with some pre-defined settings, they are all optional.Please review them before you use them as your configuration. These are justexamples to show you what you can customise in your shell.

#!/bin/zsh# Add commonly used folders to $PATHexport PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"# Specify default editor. Possible values: vim, nano, ed etc.export EDITOR=vim# File search functionsfunction f() { find . -iname "*$1*" ${@:2} }function r() { grep "$1" ${@:2} -R . }# Create a folder and move into it in one commandfunction mkcd() { mkdir -p "$@" && cd "$_"; }# Example aliasesalias cppcompile='c++ -std=c++11 -stdlib=libc++'alias g='git'
Zsh · macOS Setup Guide (2024)
Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated:

Views: 6448

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.