fish1
The friendly interactive shell
Usage
fish [OPTIONS]
[FILE
[ARG ...]]
fish [OPTIONS]
[-c
COMMAND
[ARG ...]]
Overview
fish is a command-line shell written mainly with interactive use in mind. This page briefly describes the options for invoking fish. The full manual <#intro> is available in HTML by using the help command from inside fish, and in the fish-doc(1) man page. The tutorial <> is available as HTML via help tutorial or in man fish-tutorial.
The following options are available:
-
-c or --command=COMMAND -
Evaluate the specified commands instead of reading from the commandline. Any additional positional arguments are used as
$argv.
-
-C or --init-command=COMMANDS -
Evaluate specified commands after reading the configuration but before executing command specified by
-cor reading interactive input.
-
-d or --debug=DEBUG_CATEGORIES -
Enables debug output and specify a pattern for matching debug categories. See Debugging below for details.
-
-o or --debug-output=DEBUG_FILE -
Specifies a file path to receive the debug output, including categories and
fish_trace<#envvar-fish_trace>. The default is standard error.
-
-i or --interactive -
The shell is interactive.
-
-l or --login -
Act as if invoked as a login shell.
-
-N or --no-config -
Do not read configuration files.
-
-n or --no-execute -
Do not execute any commands, only perform syntax checking.
-
-p or --profile=PROFILE_FILE -
when
fishexits, output timing information on all executed commands to the specified file. This excludes time spent starting up and reading the configuration.
-
--profile-startup=PROFILE_FILE -
Will write timing for
fishstartup to specified file.
-
-P or --private -
Enables private mode <#private-mode>:
fishwill not access old or store new history.
-
--print-rusage-self -
When
fishexits, output stats from getrusage.
-
--print-debug-categories -
Print all debug categories, and then exit.
-
-v or --version -
Print version and exit.
-
-f or --features=FEATURES -
Enables one or more comma-separated feature flags <#featureflags>.
The fish exit status is generally the exit status of the last foreground command <#variables-status>.
Debugging
While fish provides extensive support for debugging fish scripts <#debugging>, it is also possible to debug and instrument its internals. Debugging can be enabled by passing the --debug option. 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:
> fish --debug=iothread
Available categories are listed by fish --print-debug-categories. The --debug option accepts a comma-separated list of categories, and supports glob syntax. The following command turns on debugging for complete, history, history-file, and profile-history, as well as the default categories:
> fish --debug='complete,*history*'
Debug messages output to stderr by default. Note that if fish_trace <#envvar-fish_trace> is set, execution tracing also outputs to stderr by default. You can output to a file using the --debug-output option:
> fish --debug='complete,*history*' --debug-output=/tmp/fish.log --init-command='set fish_trace on'
These options can also be changed via the FISH_DEBUG <#envvar-FISH_DEBUG> and FISH_DEBUG_OUTPUT <#envvar-FISH_DEBUG_OUTPUT> variables. 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).
The file given in --debug-output takes precedence over the file in FISH_DEBUG_OUTPUT <#envvar-FISH_DEBUG_OUTPUT>.
Examples
To just start fish:
fish
To run a file with fish:
fish /path/to/script.fish
To run some commands with fish:
fish -c 'echo Hi there!'
You can also pass arguments to those commands:
> fish -c 'printf %s\n $argv' "first line" "second line" first line second line
To run a script, except read this other file first:
fish --init-cmd "source otherfile" script.fish
To profile <#profiling> fish's startup and find what takes the most time in your configuration:
fish --profile-startup /tmp/start.prof -ic exit sort -nk2 /tmp/start.prof
Releases
10 releases since Debian 4.0 (Etch); the text changed 9 times.
--command since Debian 12 (Bookworm);
--debug since Debian 12 (Bookworm);
--debug-output since Debian 12 (Bookworm);
--features since Debian 12 (Bookworm);
--init-command since Debian 12 (Bookworm);
--interactive since Debian 12 (Bookworm);
--login since Debian 12 (Bookworm);
--no-config since Debian 12 (Bookworm);
--no-execute since Debian 12 (Bookworm);
--print-debug-categories since Debian 12 (Bookworm);
--print-rusage-self since Debian 12 (Bookworm);
--private since Debian 12 (Bookworm);
--profile since Debian 12 (Bookworm);
--profile-startup since Debian 12 (Bookworm);
--version since Debian 12 (Bookworm);
-C since Debian 12 (Bookworm);
-N since Debian 12 (Bookworm);
-P since Debian 12 (Bookworm);
-c since Debian 12 (Bookworm);
-d since Debian 12 (Bookworm);
-f since Debian 12 (Bookworm);
-i since Debian 12 (Bookworm);
-l since Debian 12 (Bookworm);
-n since Debian 12 (Bookworm);
-o since Debian 12 (Bookworm);
-p since Debian 12 (Bookworm);
-v since Debian 12 (Bookworm).
--install until Debian 13 (Trixie).