Kahibaro
Discord Login Register

Bash vs Zsh vs Fish

Why There Are Different Shells

Linux offers multiple interactive shells. In this chapter you’ll compare three popular ones:

You’ll focus on how they differ in daily use, and how to choose one.

Quick Overview

Feature / AspectBashZshFish
Typical statusDefault on many distrosOften chosen by power usersFocused on ease of use
Config file~/.bashrc, ~/.bash_profile~/.zshrc~/.config/fish/config.fish
Scripting standardDe‑facto standardVery compatible with Bash scriptsNot POSIX/Bash compatible by default
CompletionGood, extendableVery powerful, with pluginsExcellent, smart and colorful out‑of‑the‑box
SuggestionsOptional via add‑onsOptional via add‑onsBuilt‑in autosuggestions
Plugins/themesMany, via frameworks (e.g. bash-it)Huge, via Oh My Zsh, zinit, etc.Some via plugins; not as extensive as Zsh
Learning curveModerateSlightly steeper than BashEasiest interactive use, but non‑standard

Bash

Bash (/bin/bash) is the “baseline” interactive shell you’ll encounter most often.

Strengths

Typical Features You’ll Notice

  PS1="\u@\h:\w\$ "

(Details of editing these belong in shell configuration chapters.)

When Bash Makes Sense

Zsh

Zsh (/bin/zsh) is a powerful shell that expands on Bash-style behavior, especially when combined with frameworks like Oh My Zsh, zinit, or Prezto.

Strengths

Features You May Notice in Daily Use

Typical Setup Pattern

Many users:

  1. Install zsh.
  2. Install Oh My Zsh or another framework.
  3. Enable a theme and some plugins (e.g. git, z, fzf integration).

(Exact installation steps belong in other chapters, so they’re not detailed here.)

When Zsh Makes Sense

Fish

Fish (“Friendly Interactive SHell”) focuses on being easy and pleasant to use out‑of‑the‑box.

Key Difference: Not a Bash/Posix Clone

Fish is intentionally not fully compatible with traditional shell syntax. That means:

Strengths

Features You’ll Notice Immediately

    set name "Alice"
    echo $name

(Note: this is a major difference from Bash/Zsh.)

When Fish Makes Sense

Changing Your Login Shell

You can usually change the shell you get when you open a terminal.

  1. Check available shells:
   cat /etc/shells
  1. Temporarily run another shell (for testing):
   zsh
   fish

Type exit to return to your previous shell.

  1. Permanently change your login shell (if allowed):
   chsh -s /usr/bin/zsh
   chsh -s /usr/bin/fish

You must log out and back in for the change to take effect. Paths vary by distribution; use one of the paths listed in /etc/shells.

How to Choose as a Beginner

A practical approach:

You can switch between them at any time; they can all coexist on the same system.

Views: 27

Comments

Please login to add a comment.

Don't have an account? Register now!