fish shell
A user-friendly shell with sensible defaults.
fish ("the friendly interactive shell") prioritises out-of-the-box usability over POSIX compatibility. Syntax highlighting, autosuggestions inferred from history, tab completion derived automatically from man pages, and a clean configuration syntax are enabled by default and require no plugins or framework. The trade-off is that fish is not a drop-in /bin/sh replacement: its scripting language uses different keywords and syntax, so shell scripts intended to run portably should still target Bash or sh.
Axel Liljencrantz released the first version in 2005 and the project has been continuously developed since. Recent releases (fish 4.0 in 2025) have rewritten most of the implementation in Rust, replacing the previous C++ codebase to improve memory safety and reduce dependencies.
fish has a sizable following among interactive users on macOS and Linux who don't want to spend time configuring Zsh with oh-my-zsh or pulling in extensive Bash plugins. It is packaged in every major distribution and on Homebrew, and dotfile-sharing configurations like Starship, fnm, and direnv all integrate cleanly.
Install
Debian/Ubuntu: sudo apt install fish Fedora/RHEL: sudo dnf install fish Arch: sudo pacman -S fish macOS: brew install fish
Authors
- Axel Liljencrantz (original author, 2005)
- fish-shell maintainers