Why Zsh and Oh‑My‑Zsh Make Linux Shells Look Stunning
This article introduces the variety of Linux shells, explains the powerful features of Zsh, and provides step‑by‑step instructions for installing Zsh, configuring it as the default shell, and enhancing it with Oh‑My‑Zsh plugins, themes, and update management.
Linux shell landscape
Common shells include sh, bash, csh and others. The installed shells can be listed with cat /etc/shells. An example output is shown in the image below.
Zsh overview
Zsh is a powerful shell that is included in most Linux distributions and can be installed via package managers such as apt‑get, yum or urpmi.
Out‑of‑the‑box programmable command‑line completion.
Shared command history across all user shells.
Extended globbing that can replace external find expansions.
Improved variable and array handling.
Multi‑line command editing in the buffer.
Compatibility modes (e.g., masquerading as Bourne shell).
Customizable prompts, including right‑hand information and auto‑hide for long commands.
Loadable modules for TCP/Unix‑domain sockets, FTP client, and extended math functions.
Fully customizable.
Oh‑My‑Zsh
Oh‑My‑Zsh is a community framework built on top of Zsh that provides plugin management, theme customization, and enhanced completion effects. Repository: https://github.com/robbyrussell/oh-my-zsh
Installation steps
Install Zsh
sudo apt-get install zshConfigure Zsh
A ready‑made .zshrc file can be copied to the user’s home directory. Existing Bash configuration files (e.g., ~/.bash_profile, ~/.profile) can also be copied into ~/.zshrc because Zsh is Bash‑compatible.
Set Zsh as the default shell
sudo usermod -s /bin/zsh usernameor
chsh -s /bin/zsh chsh -s `which zsh`To revert to Bash:
chsh -s /bin/bashInstall Oh‑My‑Zsh
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zshBackup the existing .zshrc and replace it with the template:
cp ~/.zshrc ~/.zshrc.orig
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrcOr run the installer script directly:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"Theme configuration
Set a specific theme by editing the ZSH_THEME variable in ~/.zshrc: ZSH_THEME="agnoster" Enable random theme selection:
ZSH_THEME="random"Plugin configuration
Edit the plugins array in ~/.zshrc to enable desired plugins, for example:
plugins=(git bundler osx rake ruby)Update management
Disable the weekly update prompt: disable_update_prompt=true Disable automatic updates entirely: disable_auto_update=true Manually upgrade Oh‑My‑Zsh:
upgrade_oh_my_zshUninstall Oh‑My‑Zsh
uninstall_oh_my_zsh zshLinux Tech Enthusiast
Focused on sharing practical Linux technology content, covering Linux fundamentals, applications, tools, as well as databases, operating systems, network security, and other technical knowledge.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
