functions - print or erase functions
functions [ -a | --all ] [ -n | --names ]
functions [ -D | --details ] [ -v ] FUNCTION
functions -c OLDNAME NEWNAME
functions -d DESCRIPTION FUNCTION
functions [ -e | -q ] FUNCTIONS...
functions prints or erases functions.
The following options are available:
- -a or --all lists all functions, even those whose name
starts with an underscore.
- -c OLDNAME NEWNAME or --copy OLDNAME NEWNAME creates a new
function named NEWNAME, using the definition of the OLDNAME function.
- -d DESCRIPTION or --description=DESCRIPTION changes the
description of this function.
- -e or --erase causes the specified functions to be erased.
This also means that it is prevented from autoloading.
- -D or --details reports the path name where the specified
function is defined or could be autoloaded, stdin if the function
was defined interactively or on the command line or by reading stdin,
- if the function was created via source, and n/a if the
function isn't available. (Functions created via alias will return
-, because alias uses source internally.) If the
--verbose option is also specified then five lines are
written:
- the pathname as already described,
- autoloaded, not-autoloaded or n/a,
- the line number within the file or zero if not applicable,
- scope-shadowing if the function shadows the vars in the calling
function (the normal case if it wasn't defined with
--no-scope-shadowing), else no-scope-shadowing, or
n/a if the function isn't defined,
- the function description minimally escaped so it is a single line or
n/a if the function isn't defined.
You should not assume that only five lines will be written since
we may add additional information to the output in the future.
- --no-details turns off function path reporting, so just the
definition will be printed.
- -n or --names lists the names of all defined functions.
- -q or --query tests if the specified functions exist.
- -v or --verbose will make some output more verbose.
- -H or --handlers will show all event handlers.
- -t or --handlers-type TYPE will show all event handlers
matching the given type
The default behavior of functions, when called with no
arguments, is to print the names of all defined functions. Unless the
-a option is given, no functions starting with underscores are
included in the output.
If any non-option parameters are given, the definition of the
specified functions are printed.
Copying a function using -c copies only the body of the
function, and does not attach any event notifications from the original
function.
Only one function's description can be changed in a single
invocation of functions -d.
The exit status of functions is the number of functions
specified in the argument list that do not exist, which can be used in
concert with the -q option.
functions -n
# Displays a list of currently-defined functions
functions -c foo bar
# Copies the 'foo' function to a new function called 'bar'
functions -e bar
# Erases the function ``bar``
For more explanation of how functions fit into fish, see Functions.
2021, fish-shell developers