Zsh is your friend
If Bash is the kid who gets picked last in gym class, Zsh is the athletic all-rounder everyone wants on their team. I switched to Zsh a while back and haven’t looked back.
Why Zsh?
Zsh is largely compatible with Bash, so your existing knowledge transfers over. But it adds some genuinely useful features on top.
Better Auto-completion
This is the killer feature. Zsh’s tab completion is context-aware in ways Bash isn’t.
Try typing kill and hitting tab. Instead of showing you files in the current directory (useless), Zsh shows you running processes with their PIDs. That’s actually helpful.
The same intelligence applies to command options, git branches, ssh hosts from your config, and much more.
Shared History
Open multiple terminal windows? Zsh can share command history across all of them. No more “I know I ran that command, but it was in a different tab.”
Typo Correction
Mistype a command? Zsh will ask if you meant something else:
$ gti status
zsh: correct 'gti' to 'git' [nyae]?
Editing Modes
Prefer vi keybindings? Emacs? Zsh supports both for command-line editing.
Oh My Zsh
If you want to supercharge your Zsh setup, check out oh-my-zsh. It’s a community-driven framework for managing your Zsh configuration with:
- 40+ plugins for things like git, docker, npm, and more
- 80+ themes
- Auto-updates
It makes getting started with Zsh much easier.
Try It
If you’re comfortable with Bash, give Zsh a try. On macOS, it’s now the default shell. On Linux, install it with your package manager and run chsh -s $(which zsh) to make it your default.
For a deeper dive, check out From Bash to Z Shell: Conquering the Command Line by Kiddle, Peek, and Stephenson.