Skip to content

The friendly interactive shell, with enhanced POSIX-friendliness

License

Notifications You must be signed in to change notification settings

krobelus/neofish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

neofish

This is a soft fork of fish shell, a Unix shell for interactive use.

Our goal is to further improve the interactive shell experience, especially for users who are already familiar with POSIX shells.

Most of the current changes add well-known syntax present in other shells. Just like ZSH, neofish will not be strictly POSIX compatible (at least not in the default mode). For scripting, we recommend using /bin/sh instead.

Our master branch is frequently rebased on upstream and force-pushed. This makes it easy to both see the net difference and to reintegrate any changes into upstream, which we're happy work on. Maybe some features should be opt-in?

Here is an overview of the changes, at various stages of completion. The ones marked with are functional (but may lack polish). Some are already integrated upstream.

  • $() command substitutions
  • $() in command position (to compute the command to run)
  • {} compound commands
  • () subshells
  • $(()) arithmetic expansion
  • ☑ control flow like if foo; then; fi and for; do; done.
  • foo=bar variable overrides
  • foo=bar global variable assignments
  • foo() { :; } function definitions
  • ☐ POSIX-style single quotes
  • ☐ POSIX-like heredocs (cat << EOF)
  • ☑ variables like $?, $$, $# and $@
  • ${foo#prefix} variable expansion
  • ☐ process substitution (<(foo))
  • ☐ maybe add nestable and raw quoting syntax
  • ☑ stop overriding MANPATH which shadows docs of POSIX utilties like exec
  • ☑ familiar abbreviations for modifier keys like bind c-x for bind ctrl-x

Installation

Compiling fish requires:

  • Rust (version 1.70 or later)
  • a C compiler
  • Sphinx (to build documentation)
git clone https://github.com/krobelus/neofish
cd neofish
cargo install --path .
~/.cargo/bin/fish
# configure your terminal to run that binary

Optional Dependencies

The following optional features also have specific requirements:

  • builtin commands that have the --help option or print usage messages require nroff or mandoc for display
  • automated completion generation from manual pages requires Python 3.5+
  • the fish_config web configuration tool requires Python 3.5+ and a web browser
  • system clipboard integration (with the default Ctrl-V and Ctrl-X bindings) require either the xsel, xclip, wl-copy/wl-paste or pbcopy/pbpaste utilities

Additionally, running the full test suite requires Python 3, tmux, and the pexpect package.

About

The friendly interactive shell, with enhanced POSIX-friendliness

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published