Install and Setup ZSH on Ubuntu Linux

Want a cool looking Linux terminal? Try Zsh. Learn how to set up Zsh on Ubuntu Linux with Oh My Zsh.
Warp Terminal

The default Linux terminal may get your job done but it looks boring.

Boring doesn't mean bad. It's just ... boring.

Want to spice things up? There are several ways to do that:

Yes! The third option also gives you an entirely different experience.

One such popular shell is Zsh. You can imagine its popularity from the fact that it has become the default shell in macOS.

ZSH (Z Shell) allows you to add plugins and themes by which you can tweak the whole terminal experience. Here's an example.

zsh with auto completion, syntax highlighting and powerlevel10k theme on Ubuntu

Pretty cool. Right?

In this tutorial, I'll share how you can set up Zsh to make your terminal look like the one in the screenshot above.

I am using Ubuntu in the tutorial but feel free to follow it on other Linux distributions except for the steps that require package installation.

Install ZSH on Ubuntu

First, let's install the Zsh with some prerequisites that will be useful in the later part:

sudo apt install zsh git fonts-font-awesome

Once you are done with the installation, you can start Zsh with the following command:

zsh

And it will give you various options to deal with the Zsh config file.

I'm going to configure everything from scratch so I will Β go with the option 0 to have an empty .zshrc file:

create empty zshrc file in Ubuntu

As I went with the empty config file, you will get the following prompt:

default zsh promt in ubuntu

I know it looks pretty dull (worse than bash). But hang on. We are just getting started!

Customise ZSH on Ubuntu

For the customization of Zsh, I will be covering:

  • Installing Oh my Zsh (a framework to manage Zsh)
  • Auto suggesting
  • Syntax highlighting
  • Powerlevel10k (theme for Zsh)

So let's start with the Oh My Zsh.

1. Install Oh My Zsh on Ubuntu

Using Oh My Zsh is the easiest way to manage plugins and themes for Zsh.

So it will serve as a base for plugins and themes that I'm going to share in a moment.

To install Oh My Zsh, all you have to do is execute a simple script:

sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

And it will ask you whether you want to change your default shell to Zsh or not. I would recommend you not to change it:

install oh my zsh on ubuntu

Once you press n, it will get you into the basic Oh My zsh look:

oh my zsh on Ubuntu

Pretty minimal by default. Isn't it?

2. Enable auto-suggestions on zsh

The auto-suggestion plugin will suggest you the command based on your Zsh command history.

And everyone uses a couple of commands on daily basis such as commands to update the repository, list the contents of a directory, etc.

To add the auto-suggestion plugin, first, use the given command to clone the repository:

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

Now, to activate the auto-suggestion plugin, open the zshrc file:

nano ~/.zshrc

And add zsh-autosuggestions in the plugins:

enable auto suggestion in zsh

Save changes and exit from the nano text editor.

Now, restart your terminal and start Zsh:

zsh

And it will enable the auto-suggestion:

auto suggestion on zsh

When you type a command and get the right suggestion, you can auto-complete that part using the right arrow key.

3. Enable syntax highlighting on Zsh

The best part of using syntax highlighting is that you know whether the command you are writing is correct.

But apart from command, it is also helpful while programming.

To add the syntax highlighting on Zsh, first, you have to clone the repository using the given command:

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

Next, open the zshrc file:

nano ~/.zshrc

And add zsh-syntax-highlighting to plugins as shown:

enable syntax highlighting in zsh

Now, save changes by Ctrl + O, hit enter, and press Ctrl + X to exit from the nano text editor.

Next, restart the terminal and start the Zsh to enable syntax highlighting:

zsh

And the syntax-highlighting should give you the following effect:

syntax highlighting in zsh

4. Customise Zsh with Powerlevek10k theme

From here, you will see major visual changes in your terminal.

So the first step is to clone the Powerlevel10k repository:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

Now, you will have to change the default theme (which came with Oh My Zsh). And to change that, first, open the zshrc file:

nano ~/.zshrc

You will find the currently applied theme at the line starting with ZSH_THEME

Here, the default theme will be named robbyrussell which needs to be changed with powerlevel10k/powerlevel10k:

ZSH_THEME

Save changes and restart your terminal.

Start the Zsh instance and you will be met with the configuration wizard for the powerlevel10k theme:

zsh

Here, it will ask you certain questions. It will start with Does this looks like a diamond (rotated square)? For me it doesn't:

configuration wizard for powerlevel10k

Next, it will ask the same question but for the lock. To me, it looks like one so I will go with Yes (y):

configure powerlevel10k theme on zsh

Next, it will ask whether the icons fit between crosses. To me, it doesn't, so I'm going with No (n):

icons feet between crosses in powerlevel10k theme

Once you answer all the questions, it will get you into prompt style selections where you have to choose how you want your terminal to look like:

From here on, it will get you various options to choose from. Select as per your preference.

And once you are done choosing the prompt style, it will get you into the instant prompt mode.

Here, I would recommend going with the Verbose option as it will create a backup config file:

instant prompt mode in powerlevel10k on zsh

And finally, press y to apply changes to the zshrc file:

apply changes to zshrc file

Once you apply the changes, it will show the location of the new and backup config file:

powerlevel10k theme on zsh

Not happy with the choices you made? You can configure the powerlevel10k theme from the start using the following command:

p10k configure

Change default shell to Zsh on Ubuntu

Once you are comfortable with the customizations, you can set the Zsh as your default shell.

To change your default login shell, first, execute the given command:

chsh

And to change your default shell, enter the following path of Zsh and press enter:

/bin/zsh
set zsh as a default login shell in ubuntu

But if you remember, this will serve as a basic setup so if you want to try something else, you can select from various zsh themes from GitHub.

Want to try lesser-known shells? Here you have it

Like me if you love to explore various tools, we have a dedicated guide on 9 lesser-known shells that you can try:

Beyond Bash: 9 Lesser-Known Linux Shells and Their Capabilities
You probably already know about the popular shells like bash and zsh. Let us explore some interesting and unique shells.

I hope the given guide will help you to enhance the way you communicate with your terminal and will help you to embrace the terminal.

Let me know if I missed anything or want me to cover something else.

About the author
Sagar Sharma

Sagar Sharma

A software engineer who loves to write about his experience with Linux. While reviving my crashed system, you can find me reading literature, manga, or watering my plants.

Become a Better Linux User

With the FOSS Weekly Newsletter, you learn useful Linux tips, discover applications, explore new distros and stay updated with the latest from Linux world

It's FOSS

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to It's FOSS.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.