Vintage command console

Zsh (Z shell) defines itself as a “Shell with lots of features”. Indeed, it’s a tool to enhance shell’s capabilities. Indispensable for those working in Unix-based systems. To make Zsh simpler, there is Oh-My-Zsh, which is a framework for managing the Zsh configuration with the concept of themes. The goal of this post it to get you all set with Oh-My-Zsh on your Debian Linux system.

To start, let’s install Zsh:

$ sudo apt-get install zsh
$ zsh --version

You may see a version equal or greater than 5.1.1. The next step is the installation of Oh-My-Zsh:

$ sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Oh-my-zsh installed

When the installation script finishes the command prompt is probably different from before. It means Oh-My-Zsh was successfully installed. If the prompt looks too minimalistic for you, don’t panic. Oh-My-Zsh accepts themes and this is just the default one: robbyrussell. To change it, go to the home folder, edit the hidden file .zshrc, and change the variable ZSH_THEME to bureau, which is my favorite theme:

$ cd ~
$ vim .zshrc
  ...
  ZSH_THEME="bureau"
  ...
$ source .zshrc

For a complete list of themes, checkout the theme catalog. Make sure you have some time to spare because trying new themes is addictive.

Oh-My-Zsh won’t start by default. To activate it we have to type $ zsh every time we open a new terminal. If you are convinced that Oh-My-Zsh is your thing, you can make sure it is always available. On the terminal window, select Edit > Profile Preferences in the menu. In the new window, go to the tab Title and Command, select the field Run a custom command instead of my shell and type zsh in the Custom command field. Restart the terminal to see it in action.

Console profile config

What I love about Oh-My-Zsh is its integration with Git, the smart auto-complete, and all the information it shows in a single prompt. The theme bureau shows:

  • my location, so I don’t have to type pwd all the time

  • the time, which is useful to know how long the last operation took by comparing the time of the subsequent prompt

  • the current branch and its state with a rich set of colorful symbols, when I’m in a Git repository.

Console profile config

Please, comment below your questions, thoughts and which theme suits you best.