Fish

fish - the friendly interactive shell - is Article description::a smart and user-friendly command line [[shell for OS X, Linux, and the rest of the family.]] includes features like syntax highlighting, autosuggest-as-you-type, and fancy tab completions that just work, with no configuration required.

See the terminal emulator article for some general usage pointers.

Emerge
Install :

Caveats
In Gentoo, the login shell (the shell started after a user logs in, as defined in ) sources, which in turn sources. This is needed to set up a functioning Gentoo environment, so a working POSIX shell is essential (see login shell in Gentoo for details).

can not read these files, as it is not POSIX compatible, thus it is strongly advised not to set  as the login shell for any user.

There is no reliable way to avoid this (see ), however there is a good workaround, as explained in the next section.

Those who nevertheless want to set as a default login shell can jump down to setting the  shell as the login shell, though this is highly discouraged and can result in difficult issues.

fish as a default shell with bash as the login shell
The following workaround allows the use of by default, upon login or on starting a terminal emulator. This solution uses as a wrapper to have  inherit the environment from the login shell, which is left as a bash.

Add the following to the user's, making sure it's placed below the test for an interactive shell, e.g. at the end of the file:

When is started as an interactive shell, this will automatically launch  for the user, once  has fully initialized the correct system environment. It will also set the SHELL environment variable to  in.

Log into a new virtual console to test. Keeping open the currant terminal may permit troubleshooting in case of issue with the new configuration.

This solution was suggested by one of the developers, the Arch wiki and Gentoo devs.

fish as shell with bass to create and import environment
Once is installed, install, which will permit  to source  on startup. is a utility to execute commands in and replay the environment variable changes in. The site has instructions for different installation methods, such as with the fisher plugin manager or OMF. We will explain here how to install manually, as this is the most basic method, however a plugin manager is arguably preferable.

Move into or create a base directory for the repository, for example:

Clone the repository (requires git), and move into the repository directory:

Install :

With, one can now have inherit the system-wide environment variables on startup, from.

Add the following line to, above any other commands that would need the environment to be set up ( may need to be created):

Finally, restart if it is already running.

This solution was suggested by one of the developers and the Arch wiki.

Setting the fish shell as the login shell
Those who really wish to make their login shell can still technically do so. This is not recommended and can result in a broken system:

Configuration
starts by executing commands in. The file can be created if it does not exist.

Since the version 2.0 it is possible to configure fish from a web browser session by running:

Completions
can generate completions from man pages. To generate completions run:

Environment variables
The handbook explains how to set environment variables globally, for all users, and for the default shell (bash).

Fish shell sets environment variables in a different way:

Garbled display
The output of a shell can, in some conditions, become corrupt. See the terminal emulator article for instructions to help fix this.

External resources

 * fish first steps tutorial
 * fish related question on stackoverflow
 * arch-wiki fish entry
 * fish faq