Glossary

fish

fish (the Friendly Interactive SHell) is a modern shell that breaks with POSIX tradition to offer a more consistent, user-friendly experience out of the box. Its headline features—syntax highlighting as you type, history-based autosuggestions, full-screen help, sensible tab completion without configuration—are all on by default, with no plug-ins required. Its scripting language is cleaner than POSIX sh but incompatible, which is either a virtue or a drawback depending on your priorities.

Starting fish for the first time, you immediately see commands coloured green or red depending on whether they exist in $PATH, and past commands surfaced as ghost text suggestions that or Ctrl+F will complete. The fish_config command opens a local web interface for setting colours, keybindings, and functions.

Because fish diverges from POSIX, any existing shell script beginning with #!/bin/sh will not work when pasted interactively. This is the main friction: copy-pasting VAR=value command fails in fish, which uses env VAR=value command or set -lx VAR value instead. For people who script in POSIX shell at work, this mismatch can be annoying; for people who want a great interactive shell and never write shell scripts, fish is delightful.

Related terms: Shell, bash, zsh

Discussed in:

Also defined in: Textbook of Linux