Install and Setup ZSH on Ubuntu Linux

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:

  • Customize the existing terminal by changing its color, fonts, backgrounds, etc
  • Use a different terminal emulator with better default settings
  • Use a different shell in your current terminal emulator

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.

Install and Setup ZSH on Ubuntu Linux

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:

Install and Setup ZSH on Ubuntu Linux

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

Install and Setup ZSH on Ubuntu Linux

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 and Setup ZSH on Ubuntu Linux

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

Install and Setup ZSH on Ubuntu Linux

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:

Install and Setup ZSH on Ubuntu Linux

Save changes and exit from the nano text editor.

Now, restart your terminal and start Zsh:

zsh

And it will enable the auto-suggestion:

Install and Setup ZSH on Ubuntu Linux

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:

Install and Setup ZSH on Ubuntu Linux

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:

Install and Setup ZSH on Ubuntu Linux

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:

Install and Setup ZSH on Ubuntu Linux

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:

Install and Setup ZSH on Ubuntu Linux

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

Install and Setup ZSH on Ubuntu Linux

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

Install and Setup ZSH on Ubuntu Linux

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:

Install and Setup ZSH on Ubuntu Linux

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:

Install and Setup ZSH on Ubuntu Linux

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

Install and Setup ZSH on Ubuntu Linux

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

Install and Setup ZSH on Ubuntu Linux

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
Install and Setup ZSH on Ubuntu Linux

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.
Install and Setup ZSH on Ubuntu Linux

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.

Leave a Comment