Skip to content
daniel@MacBookPro:~
Shell & TerminalNews August 31, 2026 2 min read

Fish Ships as a Shell That Deliberately Breaks From POSIX

Released February 13, 2005 by Swedish developer Axel Liljencrantz, Fish chose sensible-by-default behavior and built-in syntax highlighting over POSIX compatibility — a genuinely different bet than Bash or Zsh made.

On February 13, 2005, Swedish developer Axel Liljencrantz released the first version of fish (the friendly interactive shell) — a shell that made a genuinely different bet than Bash or Zsh, deliberately sacrificing POSIX compatibility for more consistent syntax and better defaults out of the box.

Why fish chose to break compatibility deliberately

Where Bash and Zsh both maintain substantial POSIX shell compatibility as a design constraint, fish’s design explicitly prioritized eliminating confusing, historically-inherited POSIX shell syntax quirks — accepting that existing POSIX shell scripts wouldn’t run unmodified under fish, in exchange for scripting syntax its designers considered more consistent and easier to learn from scratch.

What fish provided by default that other shells needed configuration or plugins for

From early on, fish included syntax highlighting (commands and arguments colored differently, invalid commands flagged visually) and autosuggestions (based on history and completions, shown as you type) as built-in, zero-configuration behavior — features that, on Bash or Zsh, generally require third-party plugins or frameworks to achieve anything comparable.

Liljencrantz’s role and what followed

Liljencrantz served as fish’s primary maintainer through its early versions, up to version 1.23.1, with development later continuing on GitHub through community contribution — the project reached version 2.0 in September 2013 and version 3.0 in December 2018, continuing active development for two decades after its original release.

Why fish remains a minority but persistent choice

Despite never approaching Bash’s or Zsh’s overall adoption, fish has maintained a consistent, dedicated user base specifically among users who value its out-of-the-box usability enough to accept POSIX incompatibility as a worthwhile tradeoff — a genuinely different answer to the same underlying question Zsh and its ecosystem of frameworks also try to answer: how to make daily interactive shell use less painful.

Sources: