2021-11-12 17:02:56 +00:00
.. _cmd-fish:
2021-11-12 12:20:51 +00:00
.. program :: fish
2019-03-31 09:05:09 +00:00
2018-12-17 01:39:33 +00:00
fish - the friendly interactive shell
2019-01-03 04:10:47 +00:00
=====================================
2018-12-17 01:39:33 +00:00
2018-12-18 01:58:24 +00:00
Synopsis
--------
2018-12-16 21:08:41 +00:00
2022-01-09 08:42:36 +00:00
| `` fish `` [*OPTIONS* ] [*FILE* [ARG ...]]
| `` fish `` [*OPTIONS* ] [**-c** *COMMAND* [ARG ...]]
2018-12-16 21:08:41 +00:00
2018-12-19 02:44:30 +00:00
Description
2019-01-03 04:10:47 +00:00
-----------
2018-12-16 21:08:41 +00:00
2021-11-04 20:07:30 +00:00
:command: `fish` is a command-line shell written mainly with interactive use in mind.
This page briefly describes the options for invoking :command: `fish` .
The :ref: `full manual <intro>` is available in HTML by using the :command: `help` command from inside fish, and in the `fish-doc(1)` man page.
The :ref: `tutorial <tutorial>` is available as HTML via `` help tutorial `` or in `man fish-tutorial` .
2018-12-16 21:08:41 +00:00
The following options are available:
2021-12-17 23:16:47 +00:00
**-c** or **--command=COMMAND**
Evaluate the specified commands instead of reading from the commandline, passing additional positional arguments through `` $argv `` .
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
**-C** or **--init-command=COMMANDS**
Evaluate specified commands after reading the configuration but before executing command specified by **-c** or reading interactive input.
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
**-d** or **--debug=DEBUG_CATEGORIES**
Enables debug output and specify a pattern for matching debug categories.
See :ref: `Debugging <debugging-fish>` below for details.
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
**-o** or **--debug-output=DEBUG_FILE**
Specifies a file path to receive the debug output, including categories and :envvar: `fish_trace` .
The default is stderr.
2019-04-20 07:15:51 +00:00
2021-12-17 23:16:47 +00:00
**-i** or **--interactive**
The shell is interactive.
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
**-l** or **--login**
Act as if invoked as a login shell.
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
**-N** or **--no-config**
Do not read configuration files.
2021-07-27 20:52:11 +00:00
2021-12-17 23:16:47 +00:00
**-n** or **--no-execute**
Do not execute any commands, only perform syntax checking.
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
**-p** or **--profile=PROFILE_FILE**
when :command: `fish` exits, output timing information on all executed commands to the specified file.
This excludes time spent starting up and reading the configuration.
2021-01-08 16:25:00 +00:00
2021-12-17 23:16:47 +00:00
**--profile-startup=PROFILE_FILE**
Will write timing for `` fish `` startup to specified file.
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
**-P** or **--private**
Enables :ref: `private mode <private-mode>` : **fish** will not access old or store new history.
2019-06-30 11:54:03 +00:00
2021-12-17 23:16:47 +00:00
**--print-rusage-self**
When :command: `fish` exits, output stats from getrusage.
2019-04-10 20:58:29 +00:00
2021-12-17 23:16:47 +00:00
**--print-debug-categories**
Print all debug categories, and then exit.
2019-04-20 07:15:51 +00:00
2021-12-17 23:16:47 +00:00
**-v** or **--version**
Print version and exit.
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
**-f** or **--features=FEATURES**
Enables one or more comma-separated :ref: `feature flags <featureflags>` .
2018-12-16 21:08:41 +00:00
2021-12-17 23:16:47 +00:00
The `` fish `` exit status is generally the :ref: `exit status of the last foreground command <variables-status>` .
2020-05-15 22:54:45 +00:00
.. _debugging-fish:
Debugging
---------
2021-11-04 20:07:30 +00:00
While fish provides extensive support for :ref: `debugging fish scripts <debugging>` , it is also possible to debug and instrument its internals.
2021-12-17 23:16:47 +00:00
Debugging can be enabled by passing the **--debug** option.
2021-11-04 20:07:30 +00:00
For example, the following command turns on debugging for background IO thread events, in addition to the default categories, i.e. *debug* , *error* , *warning* , and *warning-path* :
::
2020-05-15 22:54:45 +00:00
> fish --debug=iothread
2021-12-17 23:16:47 +00:00
Available categories are listed by `` fish --print-debug-categories `` . The **--debug** option accepts a comma-separated list of categories, and supports glob syntax.
2021-11-04 20:07:30 +00:00
The following command turns on debugging for *complete* , *history* , *history-file* , and *profile-history* , as well as the default categories:
::
2020-05-15 22:54:45 +00:00
> fish --debug='complete,*history* '
2021-12-17 23:16:47 +00:00
Debug messages output to stderr by default. Note that if :envvar: `fish_trace` is set, execution tracing also outputs to stderr by default. You can output to a file using the **--debug-output** option:
2021-11-04 20:07:30 +00:00
::
2020-05-15 22:54:45 +00:00
> fish --debug='complete,*history* ' --debug-output=/tmp/fish.log --init-command='set fish_trace on'
2021-11-05 14:46:27 +00:00
2021-11-05 12:14:02 +00:00
These options can also be changed via the :envvar: `FISH_DEBUG` and :envvar: `FISH_DEBUG_OUTPUT` variables.
2021-12-17 23:16:47 +00:00
The categories enabled via **--debug** are *added* to the ones enabled by $FISH_DEBUG, so they can be disabled by prefixing them with **-** (**reader-*,-ast** * enables reader debugging and disables ast debugging).
2020-09-28 15:10:40 +00:00
2021-12-17 23:16:47 +00:00
The file given in **--debug-output** takes precedence over the file in :envvar: `FISH_DEBUG_OUTPUT` .