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.
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:
As I went with the empty config file, you will get the following prompt:
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:
Once you press n
, it will get you into the basic Oh My zsh look:
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:
Save changes and exit from the nano text editor.
Now, restart your terminal and start Zsh:
zsh
And it will enable the auto-suggestion:
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:
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:
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
:
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:
Next, it will ask the same question but for the lock. To me, it looks like one so I will go with Yes (y):
Next, it will ask whether the icons fit between crosses. To me, it doesn’t, so I’m going with No (n):
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:
And finally, press y
to apply changes to the zshrc file:
Once you apply the changes, it will show the location of the new and backup config file:
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
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:
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.