github fish-shell/fish-shell 4.8.0
fish 4.8.0

6 hours ago

This release brings 234 new commits since 4.7.1, contributed by 39 authors, 21 of which are new faces.

Notable improvements and fixes

Deprecations and removed features

  • Builtin complete’s --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 (#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 (#12630).
  • Path component movement (ctrl-w) skips escaped characters.
  • Completion of short option groups will now handle --condition correctly (#12821).
  • Fixed an issue where ctrl-c might fail to cancel certain functions (#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 (#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 (#7206).
  • cd with a relative path will now retry using the real current directory, if $PWD has been moved (#12700).
  • Nested brace expansions now strip unquoted leading and trailing spaces from entries consistently (#12794).
  • bind shows the files where bindings were defined (#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 (#12790).
  • (from 4.4.0) Vi mode x in builtin read (#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 (#12379).

Thanks to everyone who contributed through issue discussions, code reviews, or code changes.

Welcome our new committers: Clément Bœsch, Deepak kudi, Drazape, Hans Larsen, Harry Garrood, Jian Weihang, Jonas Natten, June Kim, Justin Su, KeloYuan, Mark Otzen, Michael Morgan, Milo, Sean Reifschneider, Tunglies, Wes Higbee, cyphercodes, ketal, ritoban23, saku0512, sorgel

Welcome back our returning committers: Asuka Minato, Collin Styles, Daniel Rainer, David Adam, Fabian Boehm, Henrik Hørlück Berg, Johannes Altmanninger, Mahmoud Al-Qudsi, Nahor, Peter Ammon, PowerUser64, Remo Senekowitsch, Shayan, Tristan Partin, Vishrut Sachan, huaji2369, visrosa, xtqqczze


Download links: To download the source code for fish, we suggest the file named fish-4.8.0.tar.xz. The file downloaded from Source code (tar.gz) will not build correctly. A GPG signature using this key is available as fish-4.8.0.tar.xz.asc.

The files called fish-4.8.0-linux-*.tar.xz contain standalone fish binaries for any Linux with the given CPU architecture.

macOS packages will be uploaded soon

Don't miss a new fish-shell release

NewReleases is sending notifications on new releases.