./shells/fish, User friendly command line shell for UNIX-like operating systems

[ Image CVSweb ] [ Image Homepage ] [ Image RSS ] [ Image Required by ]


Branch: CURRENT, Version: 4.8.1, Package name: fish-4.8.1, Maintainer: pkgsrc-users

fish is a smart and user friendly command line shell for UNIX-like
operating systems, written mainly with interactive use in mind.
fish includes features like syntax highlighting, autosuggest-as-you-type,
and fancy tab completions that just work, with no configuration required.

This is the 4.* branch of the fish shell, rewritten from scratch in
Rust, and actively maintained. Some features introduced in fish 4.*
are described in https://fishshell.com/blog/new-in-40/


Required to run:
[devel/gettext-tools] [devel/pcre2] [lang/python37] [devel/libatomic]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 2558.145 KB

Version history: (Expand)


CVS history: (Expand)


   2026-08-09 18:45:24 by Thomas Klausner | Files touched by this commit (7) | Package updated
Log message:
fish: update to 4.8.1.

fish 4.8.1 (released July 14, 2026)
===================================

Interactive improvements
------------------------
- On non-macOS platforms, :kbd:`alt-backspace`, :kbd:`alt-delete`, \ 
:kbd:`alt-left` and :kbd:`alt-right` operate on words again instead of tokens \ 
(:issue:`12122`) eliminating cross-platform differences in input handling.
- Builtin and function commands can now be colored separately via new variables \ 
:envvar:`fish_color_builtin` and :envvar:`fish_color_function` (:issue:`12837`).
- Add :doc:`fish_darcs_prompt <cmds/fish_darcs_prompt>` for `Darcs \ 
<https://darcs.net/>`__ repository status.
- Fixed a crash in ``commandline --current-process`` when the cursor is inside a \ 
``&|`` pipe (:issue:`12868`).
- Since prompt marking (via :ref:`OSC 133 <term-compat-osc-133>`) causes \ 
an issue in `Konsole's <https://apps.kde.org/konsole/>`__ default \ 
configuration, prompt marking had been disabled for Konsole in 4.8.0.
  Now the ``omit-term-workarounds`` :ref:`feature flag <featureflags>` can \ 
be enabled to enable prompt marking on Konsole again (:issue:`12859`).

Regression fixes:
-----------------
- (From 4.8.0) ``abbr --position=anywhere`` completions are no longer offered in \ 
argument position, to avoid cluttering the completion pager (:issue:`12838`).
- (From 4.8.0) ``pacman -Q`` short option completions (:issue:`12857`).

fish 4.8.0 (released June 24, 2026)
===================================

Notable improvements and fixes
------------------------------
- Translatable messages defined in Rust source code can and should now be \ 
translated using `Fluent <https://projectfluent.org/>`__ instead of GNU \ 
gettext.
  For now, GNU gettext continues to be used for translating messages defined in \ 
fish scripts.
  To make Fluent easy to work with, we have added tooling based on the new \ 
`fluent-ftl-tools <https://codeberg.org/danielrainer/fluent-ftl-tools>`__ \ 
library.
  See :ref:`Contributing Translations <localization>` (:issue:`11928`).

Deprecations and removed features
---------------------------------
- Builtin :doc:`complete's <cmds/complete>` ``--command`` and ``--path`` \ 
options no longer unescape their argument.

Interactive improvements
------------------------
- History search would sometimes forget about commands after those were re-run \ 
in concurrent sessions. This has been fixed (:issue:`10300`).
- ``fish_hg_prompt``, ``fish_git_prompt`` and ``fish_fossil_prompt`` now strip \ 
control characters from VCS state read off disk, matching ``prompt_pwd``.
- Abbreviations with ``--position=anywhere`` can now be completed in argument \ 
position, not just in command position (:issue:`12630`).
- Path component movement (:kbd:`ctrl-w`) skips escaped characters.
- Completion of short option groups will now handle ``--condition`` correctly \ 
(:issue:`12821`).
- Fixed an issue where :kbd:`ctrl-c` might fail to cancel certain functions \ 
(:issue:`12802`).
- On the first run after upgrading from an older version, fish will try harder \ 
to check if the current theme matches a historical default.
  If it does match, fish won't create \ 
``~/.config/fish/conf.d/fish_frozen_theme.fish`` when upgrading from fish < \ 
4.3.
  In particular, on systems where fish version 3.x was installed originally, \ 
fish will now avoid creating that file on upgrade (:issue:`12725`).

Scripting improvements
----------------------
- ``cd`` supports the ``-L`` and ``-P`` options, like other shells, to allow \ 
specifying whether symbolic links (symlinks) are resolved when changing \ 
directories (:issue:`7206`).
- ``cd`` with a relative path will now retry using the real current directory, \ 
if ``$PWD`` has been moved (:issue:`12700`).
- Nested brace expansions now strip unquoted leading and trailing spaces from \ 
entries consistently (:issue:`12794`).
- :doc:`bind <cmds/bind>` shows the files where bindings were defined \ 
(:issue:`12504`).

Other improvements
------------------
- fish no longer creates the ``__fish_initialized`` universal variable on startup.
  If you don't expect to need to downgrade to earlier versions, you can remove \ 
it with ``set --erase __fish_initialized``.
  This means that fish now only creates universal variables if instructed by the \ 
user.

For distributors and developers
-------------------------------
- With the exception of the ``$CMAKE_INSTALL_PREFIX/share/fish/man`` directory, \ 
fish no longer installs files to ``$CMAKE_INSTALL_PREFIX/share/fish``.
  In particular, this means that both
  ``$CMAKE_INSTALL_PREFIX/share/fish/completions`` and
  ``$CMAKE_INSTALL_PREFIX/share/fish/functions``
  should no longer exist.
  These directories have been ignored since fish 4.2.
  If another package installs fish scripts there, they should be corrected to \ 
install to
  ``extra_completionsdir`` (typically \ 
``$CMAKE_INSTALL_PREFIX/share/fish/vendor_completions.d``),
  ``extra_functionsdir`` (typically \ 
``$CMAKE_INSTALL_PREFIX/share/fish/vendor_functions.d``) or
  ``extra_confdir`` (typically \ 
``$CMAKE_INSTALL_PREFIX/share/fish/vendor_functions.d``) instead.
  See also the output of ``for var in completions functions conf; pkgconf fish \ 
--variable="$var"dir; end``.

Regression fixes:
-----------------
- (from 4.4.0) Vi mode ``c,W`` key binding wrongly deleted trailing spaces \ 
(:issue:`12790`).
- (from 4.4.0) Vi mode ``x`` in :doc:`builtin read <cmds/read>` \ 
(:issue:`12724`).
- (from 4.3.3) Repeated tab would sometimes insert smartcase completions redundantly.
- (from 4.3.0) Pressing escape during command execution could insert garbage \ 
text into the command line (:issue:`12379`).
   2026-08-06 13:24:30 by Jonathan Perkin | Files touched by this commit (2)
Log message:
fish: A couple of fixes for Darwin.

The native pax(1) refuses to copy a directory if the target does not already
exist, and fish has a couple of manual page differences when installing on
Darwin.
   2026-08-05 18:00:22 by Thomas Klausner | Files touched by this commit (1)
Log message:
fish: add missing tool for testing and add test status comment
   2026-06-07 15:53:03 by Thomas Klausner | Files touched by this commit (1)
Log message:
fish: since we're not linking against pcre2 from pkgsrc, remove traces

Fixes
cargo/debug/xtask: Shared object "libpcre2-8.so.0" not found

see e.g.
https://releng.netbsd.org/pkgreports/shadow/HEAD/NetBSD-11.0-x86_64/20260525.0901/fish-4.7.1/install.log

Bump PKGREVISION.
   2026-05-10 20:46:49 by Paolo Vincenzo Olivo | Files touched by this commit (13) | Package removed
Log message:
shells/fish: update to 4.7.1

# pkgsrc changes
Illumos support has been upstreamed (yes!), hence most patches have been dropped.

# upstream changes (since 4.3.2)

fish 4.7.1 (released May 08, 2026)
==================================

This release fixes a regression in 4.7.0 that caused the web config \ 
(``fish_config``) to fail to start (:issue:`12717`).

fish 4.7.0 (released May 05, 2026)
==================================

Deprecations and removed features
---------------------------------
- The default theme (i.e. the ``fish_color_*`` variables) is no longer set in \ 
non-interactive shells.

Interactive improvements
------------------------
- :doc:`prompt_pwd <cmds/prompt_pwd>` now strips control characters.
- Repaint events (as triggered by changes to color variables or by event \ 
handlers running ``commandline -f repaint``) no longer reset the completion \ 
pager and other transient UI states (:issue:`12683`).
- :envvar:`fish_color_valid_path` now respects background and underline colors \ 
(:issue:`12622`).
- :doc:`funced <cmds/funced>` will no longer lose work if there are parse \ 
errors multiple times without new changes to the file.
- Fixed a case where directory completions were sorted in a surprising order \ 
(:issue:`12695`).
- When at the command token, the :kbd:`alt-o` binding will now open read-only \ 
files too (:issue:`12671`).
- Private mode in-memory history (``set fish_history``) is no longer shared with \ 
:doc:`builtin read <cmds/read>` (:issue:`12662`).

Other improvements
------------------
- History is no longer corrupted with NUL bytes when fish receives SIGTERM or \ 
SIGHUP (:issue:`10300`).
- :doc:`fish_update_completions <cmds/fish_update_completions>` now \ 
handles groff ``\X'...'`` device control escapes, fixing completion generation \ 
for man pages produced by help2man 1.50 and later (such as coreutils 9.10).
- Removing history entries via the :doc:`web-based config \ 
<cmds/fish_config>` is more intuitive.
- If :envvar:`XDG_DATA_DIRS` is empty, the default value is assumed, which means \ 
that fish will now also use configuration from paths like \ 
``$PREFIX/share/fish/vendor_completions.d`` (:issue:`11349`).
- Some internal file descriptors were moved to number 10 or higher, to reduce \ 
risk of clashes with those used by the user in scripts.
- The wording of error messages has been made consistent, especially for builtin \ 
subcommands (:issue:`12556`).

For distributors and developers
-------------------------------
- When the default global config directory (``$PREFIX/etc/fish``) exists but has \ 
been overridden via ``-DCMAKE_INSTALL_SYSCONFDIR``, fish will now respect that \ 
override (:issue:`10748`).
- ``build_tools/update_translations.fish`` has been replaced by ``cargo xtask \ 
gettext {check,new,update}`` (:issue:`12676`).
- ``cargo xtask shellcheck`` to lint shell-scripts.

Regression fixes:
-----------------
- (from 4.6) Vi mode ``dl`` (:issue:`12461`).
- (from 4.6) Backspace after newline (:issue:`12583`).
- (from 4.3.3) Long options were spuriously completed after typing short options \ 
(85e76ba3561).
- (from 3.2) ``nosuchcommand || echo hello`` executes the right hand side again \ 
(:issue:`12654`).

fish 4.6.0 (released March 28, 2026)
====================================

Notable improvements and fixes
------------------------------
- New Spanish translations (:issue:`12489`).
- New Japanese translations (:issue:`12499`).

Deprecations and removed features
---------------------------------
- The default width for emoji is switched from 1 to 2, improving the experience \ 
for users connecting to old systems from modern desktops. Users of old desktops \ 
who notice that lines containing emoji are misaligned can set \ 
``$fish_emoji_width`` back to 1 (:issue:`12562`).

Interactive improvements
------------------------
- The tab completion pager now left-justifies the description of each column \ 
(:issue:`12546`).
- fish now supports the ``SHELL_PROMPT_PREFIX``, ``SHELL_PROMPT_SUFFIX``, and \ 
``SHELL_WELCOME`` environment variables. The prefix and suffix are automatically \ 
prepended and appended to the left prompt, and the welcome message is displayed \ 
on startup after the greeting.
  These variables are set by systemd's ``run0`` for example (:issue:`10924`).

Improved terminal support
-------------------------
- ``set_color`` is able to turn off italics, reverse mode, strikethrough and \ 
underline individually (e.g. ``--italics=off``).
- ``set_color`` learned the foreground (``--foreground`` or ``-f``) and reset \ 
(``--reset``) options.
- An error caused by slow terminal responses at macOS startup has been addressed \ 
(:issue:`12571`).

Other improvements
------------------
- Signals like ``SIGWINCH`` (as sent on terminal resize) no longer interrupt \ 
builtin output (:issue:`12496`).
- For compatibility with Bash, fish now accepts ``|&`` as alternate spelling \ 
of ``&|``, for piping both standard output and standard error \ 
(:issue:`11516`).
- ``fish_indent`` now preserves comments and newlines immediately preceding a \ 
brace block (``{ }``) (:issue:`12505`).
- A crash when suspending certain pipelines with :kbd:`ctrl-z` has been fixed \ 
(:issue:`12301`).

For distributors and developers
-------------------------------
- ``cargo xtask`` subcommands no longer panic on test failures.

Regression fixes:
-----------------
- (from 4.5.0) Intermediate ``⏎`` artifact when redrawing prompt (:issue:`12476`).
- (from 4.4.0) ``history`` honors explicitly specified ``--color=`` again \ 
(:issue:`12512`).
- (from 4.4.0) Vi mode ``dl`` and ``dh`` (:issue:`12461`).
- (from 4.3.0) Error completing of commands starting with ``-`` (:issue:`12522`).

fish 4.5.0 (released February 17, 2026)
=======================================

This is mostly a patch release for Vi mode regressions in 4.4.0 but other minor \ 
behavior changes are included as well.

Interactive improvements
------------------------
- :kbd:`ctrl-l` no longer cancels history search (:issue:`12436`).
- History search cursor positioning now works correctly with characters of \ 
arbitrary width.

Deprecations and removed features
---------------------------------
- fish no longer reads the terminfo database to alter behaviour based on the \ 
:envvar:`TERM` environment variable, and does not depend on ncurses or terminfo. \ 
The ``ignore-terminfo`` feature flag, introduced and enabled by default in fish \ 
4.1, is now permanently enabled. fish may no longer work correctly on Data \ 
General Dasher D220 and Wyse WY-350 terminals, but should continue to work on \ 
all known terminal emulators released in the 21st century.

Regression fixes:
-----------------
- (from 4.4.0) Vi mode ``d,f`` key binding did not work (:issue:`12417`).
- (from 4.4.0) Vi mode ``c,w`` key binding wrongly deleted trailing spaces \ 
(:issue:`12443`).
- (from 4.4.0) Vi mode crash on ``c,i,w`` after accepting autosuggestion \ 
(:issue:`12430`).
- (from 4.4.0) ``fish_vi_key_bindings`` called with a mode argument produced an \ 
error (:issue:`12413`).
- (from 4.0.0) Build on Illumos (:issue:`12410`).

fish 4.4.0 (released February 03, 2026)
=======================================

Deprecations and removed features
---------------------------------
- The default fossil prompt has been disabled (:issue:`12342`).

Interactive improvements
------------------------
- The ``bind`` builtin lists mappings from all modes if ``--mode`` is not \ 
provided (:issue:`12214`).
- Line-wise autosuggestions that don't start a command are no longer shown \ 
(739b82c34db, 58e7a50de8a).
- Builtin ``history`` now assumes that :envvar:`PAGER` supports ANSI color sequences.
- fish now clears the terminal's ``FLUSHO`` flag when acquiring control of the \ 
terminal, to fix an issue caused by pressing :kbd:`ctrl-o` on macOS \ 
(:issue:`12304`).

New or improved bindings
------------------------
- Vi mode word movements (``w``, ``W``, ``e``, and ``E``) are now largely in \ 
line with Vim. The only exception is that underscores are treated as word \ 
separators (:issue:`12269`).
- New special input functions to support these movements: ``forward-word-vi``, \ 
``kill-word-vi``, ``forward-bigword-vi``, ``kill-bigword-vi``, \ 
``forward-word-end``, ``backward-word-end``, ``forward-bigword-end``, \ 
``backward-bigword-end``, ``kill-a-word``, ``kill-inner-word``, \ 
``kill-a-bigword``, and ``kill-inner-bigword``.
- Vi mode key bindings now support counts for movement and deletion commands \ 
(e.g. `d3w` or `3l`), via a new operator mode (:issue:`2192`).
- New ``catppuccin-*`` color themes.

Improved terminal support
-------------------------
- ``set_color`` learned the strikethrough (``--strikethrough`` or ``-s``) modifier.

For distributors and developers
-------------------------------
- The CMake option ``WITH_GETTEXT`` has been renamed to \ 
``WITH_MESSAGE_LOCALIZATION``, to reflect that it toggles localization \ 
independently of the backend used in the implementation.
- New ``cargo xtask`` commands can replace some CMake workflows.

Regression fixes:
-----------------
- (from 4.1.0) Crash when autosuggesting Unicode characters with nontrivial \ 
lowercase mapping (:issue:`12326`, 78f4541116e).
- (from 4.3.0) Glitch on ``read --prompt-str ""`` (:issue:`12296`).

fish 4.3.3 (released January 07, 2026)
======================================

This release fixes the following problems identified in fish 4.3.0:

- Selecting a completion could insert only part of the token (:issue:`12249`).
- Glitch with soft-wrapped autosuggestions and :doc:`fish_right_prompt \ 
<cmds/fish_right_prompt>` (:issue:`12255`).
- Spurious echo in tmux when typing a command really fast (:issue:`12261`).
- ``tomorrow`` theme always using the light variant (:issue:`12266`).
- ``fish_config theme choose`` sometimes not shadowing themes set by e.g. \ 
webconfig (:issue:`12278`).
- The sample prompts and themes are correctly installed (:issue:`12241`).
- Last line of command output could be hidden when missing newline (:issue:`12246`).

Other improvements include:

- The ``abbr``, ``bind``, ``complete``, ``functions``, ``history`` and ``type`` \ 
commands now support a ``--color`` option to control syntax highlighting in \ 
their output. Valid values are ``auto`` (default), ``always``, or ``never``.
- Existing file paths in redirection targets such as ``> file.txt`` are now \ 
highlighted using :envvar:`fish_color_valid_path`, indicating that ``file.txt`` \ 
will be clobbered (:issue:`12260`).
   2026-01-06 12:18:20 by Thomas Klausner | Files touched by this commit (51)
Log message:
*: forbid Python 3.11 for sphinx users

list from 'bob scan'
   2026-01-04 15:58:08 by Thomas Klausner | Files touched by this commit (2)
Log message:
fish: provide path to sphinx-build to cmake

fixes build
   2025-12-31 01:47:59 by Kevin Bloom | Files touched by this commit (9) | Package updated
Log message:
fish: update to 4.3.2

Packaging update:
- requires py-sphinx to make man pages now
- upstream fixed two patches!

4.3.2:
Some other bugs

4.3.1:
Fixes possible crash after expanding an abbreviation

4.3.0:
Deprecations and removed features
  - fish no longer sets universal variables by default, which
    simplifies configuration. Specifically, the fish_color_*,
    fish_pager_color_* and fish_key_bindings variables are now set in
    the global scope by default.
  - fish_config theme choose now clears only color variables that
    were set by earlier invocations of a fish_config theme choose
    command (which is how fish’s default theme is set).

Scripting improvements
  - New status language command allows showing and modifying
    language settings for fish messages without having to modify
    environment variables.

Interactive improvements
  - When typing immediately after starting fish, the first prompt is
    now rendered correctly.
  - Completion accuracy was improved for file paths containing = or :
  - Prefix-matching completions are now shown even if they don’t
    match the case typed by the user
  - Autosuggestions now also show soft-wrapped portions

New or improved bindings
  - ctrl-w (backward-kill-path-component) also deletes escaped spaces
  - New special input functions backward-path-component,
    forward-path-component and kill-path-component

Improved terminal support
  - Themes can now be made color-theme-aware by including both [light]
    and [dark] sections in the theme file
  - The working directory is now reported on every fresh prompt (via
    OSC 7), fixing scenarios where a child process (like ssh) left
    behind a stale working directory
  - OSC 133 prompt markers now also mark the prompt end, which
    improves shell integration with terminals like iTerm2
  - Operating-system-specific key bindings are now decided based on
    the terminal’s host OS.
  - Focus reporting is enabled unconditionally, not just inside tmux