2017-02-17 21:30:43 +08: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 17:08:49 +08:00
================================================
2017-08-24 22:51:45 +08: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 17:08:49 +08:00
2017-02-17 21:30:43 +08:00
For more on fish's design philosophy, see the [design document ](https://fishshell.com/docs/current/design.html ).
2012-08-21 17:08:49 +08:00
## Quick Start
2017-02-17 21:30:43 +08: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 17:08:49 +08:00
2017-02-17 21:30:43 +08:00
Detailed user documentation is available by running `help` within fish, and also at < https: // fishshell . com / docs / current / index . html >
2012-08-21 17:08:49 +08:00
2017-08-24 22:51:45 +08:00
## Getting fish
2012-08-21 17:08:49 +08:00
2017-08-24 22:51:45 +08:00
### macOS
2013-04-15 04:38:56 +08:00
2017-08-24 22:51:45 +08: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
Service](https://software.opensuse.org/download.html?project=shells%3Afish%3Arelease%3A2& package=fish).
Packages for Ubuntu are available from the [fish
PPA](https://launchpad.net/~fish-shell/+archive/ubuntu/release-2), and can be installed using the
following commands:
```
sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish
```
Instructions for other distributions may be found at [fishshell.com ](https://fishshell.com ).
### Windows
fish can be installed using [Cygwin ](https://cygwin.com/ ) Setup (under the **Shells** category).
2017-10-19 20:38:34 +08:00
fish can be installed into Windows Subsystem for Linux using the instructions under *Packages for
2017-08-24 22:51:45 +08:00
Linux* for the appropriate image (eg Ubuntu).
### 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
GitHub](https://github.com/fish-shell/fish-shell/releases).
See the *Building* section for instructions.
## Running fish
2013-09-06 10:41:58 +08:00
2017-08-24 22:51:45 +08:00
Once installed, run `fish` from your current shell to try fish out!
2014-03-10 10:09:30 +08:00
2017-08-24 22:51:45 +08:00
### Dependencies
Running fish requires:
2016-02-26 21:46:48 +08:00
2017-08-24 22:51:45 +08:00
* a curses implementation such as ncurses (libraries and the `tput` command)
* PCRE2 library - a copy is included with fish
* MuParser library - a copy is included with fish
* gettext (library and `gettext` command), if compiled with translation support
* basic system utilities including `basename` , `cat` , `cut` , `date` , `dircolors` , `dirname` , `ls` ,
`mkdir` , `mkfifo` , `mktemp` , `rm` , `seq` , `sort` , `stat` , `stty` , `tail` , `tr` , `tty` , `uname` ,
`uniq` , `wc` , and `whoami`
2017-08-12 15:50:45 +08:00
* a number of common UNIX utilities:
2017-08-24 22:51:45 +08:00
* `awk`
* `find`
* `grep`
* `hostname`
* `kill`
* `ps`
* `sed`
The following optional features also have specific requirements:
* builtin commands that have the `--help` option or print usage messages require `nroff` and
`ul` (manual page formatters) to do so
* completion generation from manual pages requires Python 2.7, 3.3 or greater, and possibly the
`backports.lzma` module for Python 2.7
* the `fish_config` Web configuration tool requires Python 2.7, 3.3 or greater, and a web browser
* system clipboard integration (with the default Ctrl-V and Ctrl-X bindings) require either the
`xsel` or `pbcopy` /`pbpaste` utilities
* prompts which support showing VCS information (Git, Mercurial or Subversion) require these
utilities
### Switching to fish
If you wish to use fish as your default shell, use the following command:
chsh -s /usr/local/bin/fish
2017-09-17 04:47:32 +08:00
chsh will prompt you for your password, and change your default shell. Substitute `/usr/local/bin/fish` with whatever path to fish is in your `/etc/shells` file.
2012-08-21 17:08:49 +08:00
2017-09-17 04:47:32 +08:00
Use the following command if you didn't already add your fish path to `/etc/shells` .
2017-08-24 22:51:45 +08:00
echo /usr/local/bin/fish | sudo tee -a /etc/shells
To switch your default shell back, you can run:
2017-08-09 15:46:12 +08:00
2017-08-24 22:51:45 +08:00
chsh -s /bin/bash
2017-08-09 15:46:12 +08:00
2017-09-17 04:47:32 +08:00
Substitute `/bin/bash` with `/bin/tcsh` or `/bin/zsh` as appropriate.
2017-08-24 22:51:45 +08:00
You may need to logout/login for the change (chsh) to take effect.
## Building
### Dependencies
Compiling fish requires:
* a C++11 compiler (g++ 4.8 or later, or clang 3.3 or later)
2017-10-15 04:57:03 +08:00
* CMake, or GNU Make (all platforms), or Xcode (macOS only)
2017-08-24 22:51:45 +08:00
* a curses implementation such as ncurses (headers and libraries)
* PCRE2 (headers and libraries) - a copy is included with fish
* MuParser (headers and libraries) - a copy is included with fish
* gettext (headers and libraries) - optional, for translation support
Compiling from git (that is, not a released tarball) also requires:
* either Xcode (macOS only) or the following Autotools utilities (all platforms):
* autoconf 2.60 or later
* automake 1.13 or later
* Doxygen (1.8.7 or later) - optional, for documentation
2014-03-10 10:09:30 +08:00
2017-09-25 04:04:40 +08:00
### Building from source
2012-08-21 17:08:49 +08:00
2017-10-15 04:57:03 +08:00
#### Using CMake
```bash
mkdir build; cd build
cmake .. # add -DCMAKE_BUILD_TYPE=Release for release build
make install
2017-10-15 05:50:31 +08:00
```
2017-10-15 04:57:03 +08:00
#### Using autotools
2017-09-25 03:03:25 +08:00
```bash
autoreconf --no-recursive #if building from Git
./configure
2017-09-25 04:04:40 +08:00
make
sudo make install
2017-09-25 03:03:25 +08:00
```
2012-08-21 17:08:49 +08:00
### Xcode Development Build
* Build the `base` target in Xcode
2012-12-27 13:30:03 +08:00
* Run the fish executable, for example, in `DerivedData/fish/Build/Products/Debug/base/bin/fish`
2012-08-21 17:08:49 +08:00
### Xcode Build and Install
2012-12-02 05:28:30 +08:00
xcodebuild install
sudo ditto /tmp/fish.dst /
2017-05-24 07:57:26 +08:00
sudo make install-doc
2012-08-21 17:08:49 +08:00
2017-08-24 22:51:45 +08:00
### Help, it didn't build!
2013-04-15 04:38:56 +08: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:
2015-12-17 21:25:20 +08:00
sudo apt-get install build-essential ncurses-dev libncurses5-dev gettext autoconf
2013-04-15 04:38:56 +08:00
2014-03-10 10:09:30 +08:00
On RedHat, CentOS, or Amazon EC2:
2013-04-15 04:38:56 +08:00
sudo yum install ncurses-devel
2016-04-06 09:49:06 +08:00
## Contributing Changes to the Code
See the [Guide for Developers ](CONTRIBUTING.md ).
2012-08-21 17:08:49 +08:00
## Contact Us
2017-03-28 08:44:28 +08: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-25 04:04:24 +08:00
2012-08-21 17:08:49 +08:00
Found a bug? Have an awesome idea? Please open an issue on this github page.