2022-11-13 07:07:53 +08:00
.. |Cirrus CI| image :: https://api.cirrus-ci.com/github/fish-shell/fish-shell.svg?branch=master
:target: https://cirrus-ci.com/github/fish-shell/fish-shell
:alt: Cirrus CI Build Status
`fish <https://fishshell.com/> `__ - the friendly interactive shell |Build Status| |Cirrus CI|
2020-05-28 23:07:51 +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.
2023-01-10 00:44:27 +08:00
For downloads, screenshots and more, go to https://fishshell.com/.
2020-05-28 23:07:51 +08:00
Quick Start
-----------
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”.
Detailed user documentation is available by running `` help `` within
fish, and also at https://fishshell.com/docs/current/index.html
Getting fish
------------
macOS
~~~~~
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/> `__
2022-06-02 01:38:15 +08:00
Note: The minimum supported macOS version is 10.10 "Yosemite".
2020-05-28 23:07:51 +08:00
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&package=fish>`__.
Packages for Ubuntu are available from the `fish
PPA <https://launchpad.net/~fish-shell/+archive/ubuntu/release-3>`__,
and can be installed using the following commands:
::
sudo apt-add-repository ppa:fish-shell/release-3
2021-11-30 21:39:46 +08:00
sudo apt update
sudo apt install fish
2020-05-28 23:07:51 +08:00
Instructions for other distributions may be found at
`fishshell.com <https://fishshell.com> `__ .
Windows
~~~~~~~
2024-01-02 05:07:11 +08:00
- On Windows 10/11, fish can be installed under the WSL Windows Subsystem
2020-05-28 23:07:51 +08:00
for Linux with the instructions for the appropriate distribution
listed above under “Packages for Linux”, 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).
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
2021-04-18 04:39:58 +08:00
`Building <#building> `__ section for instructions.
2020-05-28 23:07:51 +08:00
Running fish
------------
Once installed, run `` fish `` from your current shell to try fish out!
Dependencies
~~~~~~~~~~~~
Running fish requires:
2021-03-28 09:10:44 +08:00
- curses or ncurses (preinstalled on most \*nix systems)
2020-05-28 23:07:51 +08: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 `` ,
2021-02-17 00:29:46 +08:00
`` uname `` and `` sed `` at least, but the full coreutils plus `` find `` and
`` awk `` is preferred)
2020-06-15 01:09:26 +08:00
- The gettext library, if compiled with
2020-05-28 23:07:51 +08:00
translation support
The following optional features also have specific requirements:
- builtin commands that have the `` --help `` option or print usage
2022-03-27 03:41:45 +08:00
messages require `` nroff `` or `` mandoc `` for
2020-05-28 23:07:51 +08:00
display
2020-09-16 15:57:10 +08:00
- automated completion generation from manual pages requires Python 3.5+
- the `` fish_config `` web configuration tool requires Python 3.5+ and a web browser
2020-05-28 23:07:51 +08:00
- system clipboard integration (with the default Ctrl-V and Ctrl-X
bindings) require either the `` xsel `` , `` xclip `` ,
`` wl-copy `` /`` wl-paste `` or `` pbcopy `` /`` pbpaste `` utilities
- full completions for `` yarn `` and `` npm `` require the
`` all-the-package-names `` NPM module
2021-11-16 21:42:01 +08:00
- `` colorls `` is used, if installed, to add color when running `` ls `` on platforms
that do not have color support (such as OpenBSD)
2020-05-28 23:07:51 +08:00
Switching to fish
~~~~~~~~~~~~~~~~~
2023-09-06 04:36:09 +08:00
If you wish to use fish as your default shell, use the following command, from inside fish:
2020-05-28 23:07:51 +08:00
::
2023-09-06 04:36:09 +08:00
chsh -s (command -s fish)
2020-05-28 23:07:51 +08:00
2023-09-06 04:36:09 +08:00
`` chsh `` wants a full path, this will try to find where fish is installed. If that doesn't work, try to pass the path manually - it will usually be `` /usr/local/bin/fish `` if you built from source, or `` /usr/bin/fish `` if you installed a package.
2020-05-28 23:07:51 +08:00
2023-09-06 04:36:09 +08:00
`` chsh `` will prompt you for your password and change your default shell. Log out, then log in again for the changes to take effect.
Use the following command if fish isn’ t already added to `` /etc/shells `` to permit fish to be your login shell (e.g. if `` chsh `` complains that it "doesn't exist" or similar):
2020-05-28 23:07:51 +08:00
::
2023-12-16 20:42:16 +08:00
command -s fish | sudo tee -a /etc/shells
2020-05-28 23:07:51 +08: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).
Building
--------
.. _dependencies-1:
Dependencies
~~~~~~~~~~~~
2023-07-15 16:56:28 +08:00
Compiling fish from a tarball requires:
2020-05-28 23:07:51 +08:00
- a C++11 compiler (g++ 4.8 or later, or clang 3.3 or later)
2021-06-28 23:56:02 +08:00
- CMake (version 3.5 or later)
2020-05-28 23:07:51 +08:00
- a curses implementation such as ncurses (headers and libraries)
2022-07-03 09:46:44 +08:00
- PCRE2 (headers and libraries) - optional, this will be downloaded if missing
2020-05-28 23:07:51 +08:00
- gettext (headers and libraries) - optional, for translation support
Sphinx is also optionally required to build the documentation from a
cloned git repository.
2020-09-16 15:57:10 +08:00
Additionally, running the test suite requires Python 3.5+ and the pexpect package.
2020-06-15 01:07:38 +08:00
2023-07-15 16:56:28 +08:00
Dependencies, git master
~~~~~~~~~~~~~~~~~~~~~~~~
Building from git master currently requires, in addition to the dependencies for a tarball:
- Rust (version 1.67 or later)
2023-10-12 15:48:13 +08:00
- CMake (version 3.19 or later)
2023-08-04 22:28:11 +08:00
- libclang, even if you are compiling with GCC
- an Internet connection
2023-07-15 16:56:28 +08:00
2023-08-04 22:28:11 +08:00
fish is in the process of being ported to Rust, replacing all C++ code, and as such these dependencies are a bit awkward and in flux.
2023-07-15 16:56:28 +08:00
In general, we would currently not recommend running from git master if you just want to *use* fish.
Given the nature of the port, what is currently there is mostly a slower and buggier version of the last C++-based release.
2020-05-28 23:07:51 +08:00
Building from source (all platforms) - Makefile generator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To install into `` /usr/local `` , run:
.. code :: bash
mkdir build; cd build
cmake ..
make
sudo make install
The install directory can be changed using the
`` -DCMAKE_INSTALL_PREFIX `` parameter for `` cmake `` .
2021-06-06 18:21:32 +08:00
Build options
~~~~~~~~~~~~~
2023-08-04 22:28:11 +08:00
In addition to the normal CMake build options (like `` CMAKE_INSTALL_PREFIX `` ), fish has some other options available to customize it.
2021-06-06 18:21:32 +08:00
2023-08-04 22:28:11 +08:00
- BUILD_DOCS=ON|OFF - whether to build the documentation. This is automatically set to OFF when Sphinx isn't installed.
2021-06-06 18:21:32 +08:00
- INSTALL_DOCS=ON|OFF - whether to install the docs. This is automatically set to on when BUILD_DOCS is or prebuilt documentation is available (like when building in-tree from a tarball).
- FISH_USE_SYSTEM_PCRE2=ON|OFF - whether to use an installed pcre2. This is normally autodetected.
- MAC_CODESIGN_ID=String|OFF - the codesign ID to use on Mac, or "OFF" to disable codesigning.
- WITH_GETTEXT=ON|OFF - whether to build with gettext support for translations.
Note that fish does *not* support static linking and will attempt to error out if it detects it.
2020-05-28 23:07:51 +08:00
Help, it didn’ t build!
~~~~~~~~~~~~~~~~~~~~~~
If fish reports that it could not find curses, try installing a curses
development package and build again.
On Debian or Ubuntu you want:
::
2021-11-30 21:39:46 +08:00
sudo apt install build-essential cmake ncurses-dev libncurses5-dev libpcre2-dev gettext
2020-05-28 23:07:51 +08:00
On RedHat, CentOS, or Amazon EC2:
::
sudo yum install ncurses-devel
Contributing Changes to the Code
--------------------------------
2020-05-28 23:10:21 +08:00
See the `Guide for Developers <CONTRIBUTING.rst> `__ .
2020-05-28 23:07:51 +08:00
Contact Us
----------
Questions, comments, rants and raves can be posted to the official fish
mailing list at https://lists.sourceforge.net/lists/listinfo/fish-users
2023-09-06 21:48:12 +08:00
or join us on our `matrix
channel <https://matrix.to/#/#fish-shell:matrix.org>`__. Or use the ` fish tag
2021-12-01 05:13:25 +08:00
on Unix & Linux Stackexchange <https://unix.stackexchange.com/questions/tagged/fish>`__.
There is also a fish tag on Stackoverflow, but it is typically a poor fit.
2020-05-28 23:07:51 +08:00
Found a bug? Have an awesome idea? Please `open an
issue <https://github.com/fish-shell/fish-shell/issues/new>`__.
2021-12-18 08:12:08 +08:00
.. |Build Status| image :: https://github.com/fish-shell/fish-shell/workflows/make%20test/badge.svg
2020-11-11 02:03:09 +08:00
:target: https://github.com/fish-shell/fish-shell/actions