What's new in The friendly interactive shell 2.1.1

Dec 5, 2014
  • Security fixes:
  • The fish_config web interface now uses an authentication token to protect requests and only responds to requests from the local machine with this token, preventing a remote code execution attack. (closing CVE-2014-2914). #1438
  • psub and funced are no longer vulnerable to attacks which allow local privilege escalation and data tampering (closing CVE-2014-2906 and CVE-2014-3856). #1437
  • fishd uses a secure path for its socket, preventing a local privilege escalation attack (closing CVE-2014-2905). #1436
  • __fish_print_packages is no longer vulnerable to attacks which would allow local privilege escalation and data tampering (closing CVE-2014-3219). #1440
  • Other fixes:
  • fishd now ignores SIGPIPE, fixing crashes using tools like GNU Parallel and which occurred more often as a result of the other fishd changes. #1084 & #1690

New in The friendly interactive shell 2.0.0 (Feb 13, 2014)

  • Significant Changes:
  • Command substitutions now modify $status #547.
  • Previously the exit status of command substitutions (like (pwd)) was ignored; however now it modifies $status. Furthermore, the set command now only sets $status on failure; it is untouched on success. This allows for the following pattern:
  • if set python_path (which python)
  • ...
  • end
  • Because set does not modify $status on success, the if branch effectively tests whether which succeeded, and if so, whether the set also succeeded.
  • Improvements to $PATH handling.
  • There is a new variable, $fish_user_paths, which can be set universally, and whose contents are appended to $PATH #527
  • /etc/paths and /etc/paths.d are now respected on OS X
  • fish no longer modifies $PATH to find its own binaries
  • Long lines no longer use ellipsis for line breaks, and copy and paste should no longer include a newline even if the line was broken #300
  • New syntax for index ranges (sometimes known as "slices") #212
  • fish now supports an else if statement #134
  • Process and pid completion now works on OS X #129
  • fish is now relocatable, and no longer depends on compiled-in paths #125
  • fish now supports a right prompt (RPROMPT) through the fish_right_prompt function #80
  • fish now uses posix_spawn instead of fork when possible, which is much faster on BSD and OS X #11
  • Other Notable Fixes:
  • Updated VCS completions (darcs, cvs, svn, etc.)
  • Avoid calling getcwd on the main thread, as it can hang #696
  • Control-D (forward delete) no longer stops at a period #667
  • Completions for many new commands
  • fish now respects rxvt's unique keybindings #657
  • xsel is no longer built as part of fish. It will still be invoked if installed separately #633
  • __fish_filter_mime no longer spews #628
  • The --no-execute option to fish no longer falls over when reaching the end of a block #624
  • fish_config knows how to find fish even if it's not in the $PATH #621
  • A leading space now prevents writing to history, as is done in bash and zsh #615
  • Hitting enter after a backslash only goes to a new line if it is followed by whitespace or the end of the line #613
  • printf is now a builtin #611
  • Event handlers should no longer fire if signals are blocked #608
  • set_color is now a builtin #578
  • man page completions are now located in a new generated_completions directory, instead of your completions directory #576
  • tab now clears autosuggestions #561
  • tab completion from within a pair of quotes now attempts to "appropriate" the closing quote #552
  • $EDITOR can now be a list: for example, set EDITOR gvim -f) #541
  • case bodies are now indented #530
  • The profile switch -p no longer crashes #517
  • You can now control-C out of read #516
  • umask is now functional on OS X #515
  • Avoid calling getpwnam on the main thread, as it can hang #512
  • Alt-F or Alt-right-arrow (Option-F or option-right-arrow) now accepts one word of an autosuggestion #435
  • Setting fish as your login shell no longer kills OpenSUSE #367
  • Backslashes now join lines, instead of creating multiple commands #347
  • echo now implements the -e flag to interpret escapes #337
  • When the last token in the user's input contains capital letters, use its case in preference to that of the autosuggestion #335
  • Descriptions now have their own muted color #279
  • Wildcards beginning with a . (for example, ls .*) no longer match . and .. #270
  • Recursive wildcards now handle symlink loops #268
  • You can now delete history items from the fish_config web interface #250
  • The OS X build now weak links wcsdup and wcscasecmp #240
  • fish now saves and restores the process group, which prevents certain processes from being erroneously reported as stopped #197
  • funced now takes an editor option #187
  • Alternating row colors are available in fish pager through fish_pager_color_secondary #186
  • Universal variable values are now stored based on your MAC address, not your hostname #183
  • The caret ^ now only does a stderr redirection if it is the first character of a token, making git users happy #168
  • Autosuggestions will no longer cause line wrapping #167
  • Better handling of Unicode combining characters #155
  • fish SIGHUPs processes more often #138
  • fish no longer causes sudo to ask for a password every time
  • fish behaves better under Midnight Commander #121
  • set -e no longer crashes #100
  • fish now will automatically import history from bash, if there is no fish history #66
  • Backslashed-newlines inside quoted strings now behave more intuitively #52
  • Tab titles should be shown correctly in iTerm2 #47
  • scp remote path completion now sometimes works #42
  • The read builtin no longer shows autosuggestions #29
  • Custom key bindings can now be set via the fish_user_key_bindings function #21
  • All Python scripts now run correctly under both Python 2 and Python 3 #14
  • The "accept autosuggestion" key can now be configured #19
  • Autosuggestions will no longer suggest invalid commands #6

New in The friendly interactive shell 1.23.1 (Mar 8, 2009)

  • This release contains a long list of fixes for bugs, annoyances, and misfeatures, as well as many new command-specific tab completions.