2017-02-17 13:30:43 +00:00
[fish ](https://fishshell.com/ ) - the friendly interactive shell [![Build Status ](https://travis-ci.org/fish-shell/fish-shell.svg?branch=master )](https://travis-ci.org/fish-shell/fish-shell)
2012-08-21 09:08:49 +00:00
================================================
2017-08-24 14:51:45 +00:00
fish is a smart and user-friendly command line shell for macOS, Linux, and the rest of the family.
fish includes features like syntax highlighting, autosuggest-as-you-type, and fancy tab completions
that just work, with no configuration required.
2012-08-21 09:08:49 +00:00
2017-02-17 13:30:43 +00:00
For more on fish's design philosophy, see the [design document ](https://fishshell.com/docs/current/design.html ).
2012-08-21 09:08:49 +00:00
## Quick Start
2017-02-17 13:30:43 +00:00
fish generally works like other shells, like bash or zsh. A few important differences can be found at < https: / / fishshell . com / docs / current / tutorial . html > by searching for the magic phrase "unlike other shells".
2012-08-21 09:08:49 +00:00
2017-02-17 13:30:43 +00:00
Detailed user documentation is available by running `help` within fish, and also at < https: // fishshell . com / docs / current / index . html >
2012-08-21 09:08:49 +00:00
2018-04-08 19:52:00 +00:00
You can quickly play with fish right in your browser by clicking the button below:
[![Try in browser ](https://cdn.rawgit.com/rootnroll/library/assets/try.svg )](https://rootnroll.com/d/fish-shell/)
2017-08-24 14:51:45 +00:00
## Getting fish
2012-08-21 09:08:49 +00:00
2017-08-24 14:51:45 +00:00
### macOS
2013-04-14 20:38:56 +00:00
2017-08-24 14:51:45 +00:00
fish can be installed:
* using [Homebrew ](http://brew.sh/ ): `brew install fish`
* using [MacPorts ](https://www.macports.org/ ): `sudo port install fish`
* using the [installer from fishshell.com ](https://fishshell.com/ )
* as a [standalone app from fishshell.com ](https://fishshell.com/ )
### Packages for Linux
Packages for Debian, Fedora, openSUSE, and Red Hat Enterprise Linux/CentOS are available from the
[openSUSE Build
2019-01-03 15:34:26 +00:00
Service](https://software.opensuse.org/download.html?project=shells%3Afish& package=fish).
2017-08-24 14:51:45 +00:00
Packages for Ubuntu are available from the [fish
2019-01-03 08:57:02 +00:00
PPA](https://launchpad.net/~fish-shell/+archive/ubuntu/release-3), and can be installed using the
2017-08-24 14:51:45 +00:00
following commands:
```
2019-01-03 08:57:02 +00:00
sudo apt-add-repository ppa:fish-shell/release-3
2017-08-24 14:51:45 +00:00
sudo apt-get update
sudo apt-get install fish
```
Instructions for other distributions may be found at [fishshell.com ](https://fishshell.com ).
### Windows
2018-03-09 22:03:44 +00:00
- On Windows 10, fish can be installed under the WSL Windows Subsystem for Linux with `sudo apt install fish` or from source with the instructions below.
- Fish can also be installed on all versions of Windows using [Cygwin ](https://cygwin.com/ ) (from the **Shells** category).
2017-08-24 14:51:45 +00:00
### Building from source
If packages are not available for your platform, GPG-signed tarballs are available from
[fishshell.com ](https://fishshell.com/ ) and [fish-shell on
2018-03-09 22:03:44 +00:00
GitHub](https://github.com/fish-shell/fish-shell/releases). See the *Building* section for instructions.
2017-08-24 14:51:45 +00:00
## Running fish
2013-09-06 02:41:58 +00:00
2017-08-24 14:51:45 +00:00
Once installed, run `fish` from your current shell to try fish out!
2014-03-10 02:09:30 +00:00
2017-08-24 14:51:45 +00:00
### Dependencies
Running fish requires:
2016-02-26 13:46:48 +00:00
2018-03-10 13:19:23 +00:00
* curses or ncurses (preinstalled on most \*nix systems)
2019-11-05 10:06:20 +00:00
* some common \*nix system utilities (currently `mktemp` ), in addition to the basic POSIX utilities (`cat`, `cut` , `dirname` , `ls` , `mkdir` , `mkfifo` , `rm` , `sort` , `tee` , `tr` , `uname` and `sed` at least, but the full coreutils plus find, sed and awk is preferred)
2017-08-24 14:51:45 +00:00
* gettext (library and `gettext` command), if compiled with translation support
The following optional features also have specific requirements:
2019-01-06 17:16:44 +00:00
* builtin commands that have the `--help` option or print usage messages require `ul` and either `nroff` or `mandoc` for display
2018-03-09 22:03:44 +00:00
* automated completion generation from manual pages requires Python (2.7+ or 3.3+) and possibly the
2017-08-24 14:51:45 +00:00
`backports.lzma` module for Python 2.7
2018-03-09 22:03:44 +00:00
* the `fish_config` web configuration tool requires Python (2.7+ or 3.3 +) and a web browser
2017-08-24 14:51:45 +00:00
* system clipboard integration (with the default Ctrl-V and Ctrl-X bindings) require either the
2019-03-14 12:30:49 +00:00
`xsel` , `xclip` , `wl-copy` /`wl-paste` or `pbcopy` /`pbpaste` utilities
2018-08-21 06:48:31 +00:00
* full completions for `yarn` and `npm` require the `all-the-package-names` NPM module
2017-08-24 14:51:45 +00:00
### Switching to fish
If you wish to use fish as your default shell, use the following command:
chsh -s /usr/local/bin/fish
2019-08-22 12:48:34 +00:00
`chsh` will prompt you for your password and change your default shell. (Substitute `/usr/local/bin/fish` with whatever path fish was installed to, if it differs.) Log out, then log in again for the changes to take effect.
2012-08-21 09:08:49 +00:00
2018-03-09 22:03:44 +00:00
Use the following command if fish isn't already added to `/etc/shells` to permit fish to be your login shell:
2017-08-24 14:51:45 +00:00
echo /usr/local/bin/fish | sudo tee -a /etc/shells
2018-03-09 22:03:44 +00:00
To switch your default shell back, you can run `chsh -s /bin/bash` (substituting `/bin/bash` with `/bin/tcsh` or `/bin/zsh` as appropriate).
2017-08-24 14:51:45 +00:00
## Building
### Dependencies
Compiling fish requires:
* a C++11 compiler (g++ 4.8 or later, or clang 3.3 or later)
2019-02-27 13:20:14 +00:00
* CMake (version 3.2 or later)
2017-08-24 14:51:45 +00:00
* a curses implementation such as ncurses (headers and libraries)
* PCRE2 (headers and libraries) - a copy is included with fish
* gettext (headers and libraries) - optional, for translation support
2019-03-30 20:48:17 +00:00
Sphinx is also optionally required to build the documentation from a cloned git repository.
2017-08-24 14:51:45 +00:00
2019-02-27 13:20:14 +00:00
### Building from source (all platforms) - Makefile generator
2017-10-14 20:57:03 +00:00
2019-07-31 01:15:23 +00:00
To install into `/usr/local` , run:
2017-10-14 20:57:03 +00:00
```bash
mkdir build; cd build
2018-10-02 01:19:36 +00:00
cmake ..
2018-03-09 22:03:44 +00:00
make
sudo make install
2017-10-14 21:50:31 +00:00
```
2017-10-14 20:57:03 +00:00
2019-07-31 01:15:23 +00:00
The install directory can be changed using the `-DCMAKE_INSTALL_PREFIX` parameter for `cmake` .
2019-02-27 13:20:14 +00:00
### Building from source (macOS) - Xcode
2017-10-14 20:57:03 +00:00
2017-09-24 19:03:25 +00:00
```bash
2019-02-27 13:20:14 +00:00
mkdir build; cd build
cmake .. -G Xcode
2017-09-24 19:03:25 +00:00
```
2012-08-21 09:08:49 +00:00
2019-07-31 01:15:23 +00:00
An Xcode project will now be available in the `build` subdirectory. You can open it with Xcode,
or run the following to build and install in `/usr/local` :
```bash
xcodebuild
xcodebuild -scheme install
```
The install directory can be changed using the `-DCMAKE_INSTALL_PREFIX` parameter for `cmake` .
2019-02-27 13:20:14 +00:00
2017-08-24 14:51:45 +00:00
### Help, it didn't build!
2013-04-14 20:38:56 +00:00
If fish reports that it could not find curses, try installing a curses development package and build again.
On Debian or Ubuntu you want:
2019-02-27 13:20:14 +00:00
sudo apt-get install build-essential cmake ncurses-dev libncurses5-dev libpcre2-dev gettext
2013-04-14 20:38:56 +00:00
2014-03-10 02:09:30 +00:00
On RedHat, CentOS, or Amazon EC2:
2013-04-14 20:38:56 +00:00
sudo yum install ncurses-devel
2016-04-06 01:49:06 +00:00
## Contributing Changes to the Code
See the [Guide for Developers ](CONTRIBUTING.md ).
2012-08-21 09:08:49 +00:00
## Contact Us
2017-03-28 00:44:28 +00:00
Questions, comments, rants and raves can be posted to the official fish mailing list at < https: // lists . sourceforge . net / lists / listinfo / fish-users > or join us on our [gitter.im channel ](https://gitter.im/fish-shell/fish-shell ) or IRC channel [#fish at irc.oftc.net ](https://webchat.oftc.net/?channels=fish ). Or use the [fish tag on Stackoverflow ](https://stackoverflow.com/questions/tagged/fish ) for questions related to fish script and the [fish tag on Superuser ](https://superuser.com/questions/tagged/fish ) for all other questions (e.g., customizing colors, changing key bindings).
2013-03-24 20:04:24 +00:00
2018-10-01 05:55:08 +00:00
Found a bug? Have an awesome idea? Please [open an issue ](https://github.com/fish-shell/fish-shell/issues/new ).