fish
A user-friendly interactive command-line shell for Linux, macOS and other Unix-like systems.
Liked for working well out of the box with little configuration,1234 with built-in autosuggestions, tab completions and syntax highlighting,567 and for syntax with fewer footguns than Bash.89 The main caveats are its lack of `!`-style history expansion1011 and that it is not POSIX-compatible.12
Why people recommend it
Good defaults · 3
Commenters say fish mostly works out of the box, so they rarely need plugins, configs or dotfiles.
“Fish is such a wonderful shell. It’s been my daily driver for many years now”
“I moved to the fish shell 5 years ago.”
Show 1 more
“Exactly why I switched to fish. Fish doesn't come preconfigured exactly how I would like, but it's close enough”
Long-term favorite · 3
Several commenters have used it as their daily driver for years and strongly prefer it to Bash and Zsh.
“Fish is such a wonderful shell. It’s been my daily driver for many years now”
“I love it so much that I pity people that use Bash, Zsh.”
Show 1 more
“I moved to fish for 1 year and I like it even more”
Built-in completions · 3
Autosuggestions, tab completions and syntax highlighting come built in, without Oh My Zsh-style add-ons.
“Fish has autocomplete and syntax highlighting out of the box which is quite neat”
“now I know about `fish` and am learning there are some nice features I never had in ZSH”
Show 1 more
“I moved to fish for 1 year and I like it even more”
Saner syntax · 3
Commenters praise its syntax and functions, and say variables are not split into words unexpectedly.
“No implicit word splitting : spaces in variables won't unexpectedly become separate arguments.”
“I moved to fish for 1 year and I like it even more”
Show 1 more
“For most scripts I use fish, which is my preferred interactive shell too.”
User experience · 2
Commenters value its careful focus on interactive use, even on servers.
“I use fish as my regular shell. Big fan of fish's careful focus on user experience”
“If I'm manually running commands on a server it means I'll likely use it interactively a lot, might as well not suffer”
Caveats and dissent
No history expansion · 2
It does not support `!`-style history expansion, so tcsh and Bash users need workarounds.
“I switched to Fish recently and I continue to be annoyed by its refusal to implement this feature.”
“because I use fish”
Not POSIX · 1
Fish is not POSIX- or Bourne-compatible, so its syntax differs from standard shells.
“fish is not POSIX-compatible, and not Bourne-compatible”
Imperfect defaults · 1
One commenter says the defaults were not exactly what they wanted, though they adapted to them.
“Exactly why I switched to fish. Fish doesn't come preconfigured exactly how I would like, but it's close enough”
Often compared with
Threads where it came up
- You probably don't need Oh My Zsh 3 mentions
- A shell exclamation mark is not for yelling. Be lazy 2 mentions
- The history of development of Norton Commander (2011) 1 mention
- The tilde in your PATH may not be your HOME 1 mention
- Ask HN: Whats the first command you run on a new server? 1 mention
- PSA about abuse of cat(1) command. Don't abuse cats 1 mention
Also written as Fish. Data: fish.json. Quotes are verbatim; the verdict and theme labels are written by a model from these comments, and every clause links to its sources.
All comments 20
“shifted towards fish + vidir”
“No implicit word splitting : spaces in variables won't unexpectedly become separate arguments.”
“If I'm manually running commands on a server it means I'll likely use it interactively a lot, might as well not suffer”
“because I use fish”
“I switched to Fish recently and I continue to be annoyed by its refusal to implement this feature.”
“fish is not POSIX-compatible, and not Bourne-compatible”
“I use fish as my regular shell. Big fan of fish's careful focus on user experience”
“I moved to fish for 1 year and I like it even more”
“I use fish shell and have done a bunch of optimization around async git statuses too.”
“plays nicely with my setup of fish+alac”
“Fish, zoxide, tmux, helix, ripgrep, fd-find, htop. There are many more, but these are the ones that I enjoy using.”
“I love it so much that I pity people that use Bash, Zsh.”
“Fish is such a wonderful shell. It’s been my daily driver for many years now”
“I moved to the fish shell 5 years ago.”
“I do use fish as my default shell.”
“I use fish on my local (mac + homebrew) machine”
“now I know about `fish` and am learning there are some nice features I never had in ZSH”
“Exactly why I switched to fish. Fish doesn't come preconfigured exactly how I would like, but it's close enough”
“Fish has autocomplete and syntax highlighting out of the box which is quite neat”
“For most scripts I use fish, which is my preferred interactive shell too.”