fish Shell Becomes More Awesome With 3.0 Release

The developers behind the fish shell announced the release of version 3.0.0. Let’s take a look at the new features in this major release.

What is the fish Shell, again?

The fish Shell is “a smart and user-friendly command-line shell for Linux, macOS, and the rest of the family”. fish is a more modern shell with the goal of being more interactive and more user-friendly than older shells. Unlike its competitors, fish is not based on the Bourne shell or the C shell but attempts to blaze its own path.

fish shell
Testing fish shell on the web

fish shell comes with some nice features, such as:

  • Autosuggestions as you type
  • Syntax highlighting with extensive error checking.
  • Searchable command history.
  • 256 terminal colors
  • Advanced tab completion.
  • Web-based configuration
  • A special help command gives access to all the fish documentation in the user’s web browser
  • Error messages designed to actually tell the user what went wrong and what can be done about it
  • Universal variables
  • Support for the X clipboard
  • Change fish setting by editing the ~/.config/fish/config.fish file
  • Man page completions
  • Fully scriptable with syntax that is simple, clean, and consistent
  • Features work out of the box without any configuration
fish shell on Q4OS
fish shell on Q4OS

What’s New in fish 3.0?

The new features included in 3.0.0 include:

  • Supports for &&, || , and ! for better migration from POSIX-compliant shells
  • Variables may be used as commands
  • New private mode which will hide commands from the history file. Can be activated using fish --private.
  • A new wait command for waiting on backgrounded processes
  • The machine hostname, where available, is now exposed as the $hostname reserved variable
  • Abbreviations can be tab-completed
  • Notifications about crashed processes are now always shown, even in command substitutions
  • True color is now enabled in neovim by default
  • xclip support has been added to the clipboard integration
  • Added support for 52 commands autocompletes, such as hugo, clang, eopkg and curl
  • Pressing Ctrl-C while running a script now reliably terminates fish
  • Major rework of terminal and job handling to eliminate bugs
  • Improvements to the manual page completion generator
  • Build scripts for most platforms no longer require bash
  • Ships with a new build system based on CMake
Fish Shell 3.0 Released

How to Install fish Shell 3.0

Before you install fish, you can try it in the browser.

Install fish 3.0 on Linux

Packages for Debian, Fedora, openSUSE, and Red Hat Linux are available from the openSUSE Build Service.

There is a fish PPA for Ubuntu systems. Here are the commands:

sudo apt-add-repository ppa:fish-shell/release-3
sudo apt update
sudo apt install fish

For Arch and Arch-based systems, you can use pacman -S fish to install fish.

Solus users can install fish using this command: eopkg install fish.

Install fish 3.0 on macOS

macOS users can either use Homebrew brew install fish or Macports sudo port install fish to install fish.

Install fish 3.0 on FreeBSD

If you run FreeBSD, you can install fish with the pkg install fish command.

Install fish 3.0 on Windows

There are two ways you can install fish on Windows. On Windows 10, you can install fish on the Windows Subsystem for Linux with sudo apt install fish. If you are using a previous version of Windows, you can use Cygwin to install fish.

Final Thoughts on fish 3.0

I have used fish on and off in the past. I never really put aside the time to learn it. Funnily enough, the last time I used it (a couple weeks ago), I ran into a problem running sudo apt update && sudo apt upgrade. The command failed and gave me an error message saying that I need to use and instead of &&. It wasn’t a major problem, I just rewrote the command and it worked. Now they added support for && in version 3.0.0. Guess I won’t have to worry about that in the future.

Have you ever used fish shell? If not, what is your favorite shell? Let us know in the comments below.

If you found this article interesting, please take a minute to share it on social media, Hacker News or Reddit.

Similar Posts

  • More than anything else:
    The universal variables filename no longer contains the hostname or MAC address. It is now at the fixed location .config/fish/fish_variables (#1912).
    Thank you!