POSIX where it matters. Friendly where you live.

rush

Rush is a POSIX shell with dash-class speed, Bash-shaped conveniences, async prompts, autosuggestions, and a modern interactive editor.

Keep portable scripts boring. Make daily command lines pleasant: Unicode-aware editing, fast searchable history, structured completions, non-blocking prompt data, and terminal-native rendering.

Install Rush Read the docs

~/src/rush main * git switch -c nicer-homepage
Switched to a new branch

~/src/rush nicer-homepage * printf 'hello, 🌎\n'
hello, 🌎

~/src/rush nicer-homepage * rush --posix -c 'set -eu; echo portable'
portable
POSIX.1-2024rush --posix targets Issue 8 shell semantics.
Dash-class fastBuilt to stay small and quick for scripts and startup.
Async promptSlow prompt segments run in the background and cache results.
AutosuggestionsInline suggestions come from relevant command history.
SQLite historyPersistent, searchable, cwd-aware command history.

Why Rush

Portable scripts stay portable

rush --posix targets POSIX.1-2024 / Issue 8: shell language, expansion, redirection, job control, and builtins.

Bashisms when they help

Default Rush keeps valid POSIX scripts meaningful while accepting selected Bash-shaped extensions for migration and interactive use.

User friendly by default

Emacs and vi editing modes, styled diagnostics, fish-style abbreviations, and structured completions are built in.

Async prompts stay responsive

Prompt segments can fetch Git state, tool versions, or project metadata in the background while Rush keeps the editor usable.

Autosuggestions from real history

Rush suggests likely commands inline from SQLite history, using current-directory context before falling back to global matches.

Modern terminal native

Rush probes capabilities and uses synchronized output, Unicode grapheme widths, bracketed paste, modern keys, and color-scheme reports when available.

XDG clean

Configuration, autoloaded functions, and state live in XDG locations, with sensible $HOME fallbacks for systems that do not set them.

History worth searching

Command history is stored in SQLite with FTS-backed search, timestamps, status, duration, hostname, session, and current-directory context.

One shell for scripts and humans

Rush is intentionally conservative at the script boundary and intentionally comfortable at the prompt. That means a strict POSIX mode for conformance work, plus a default mode that feels familiar to Bash users without giving up the portable core.

Rush targets POSIX-like systems first: Linux, macOS, and BSDs.

# strict script mode
rush --posix script.sh

# friendly interactive mode
rush
# completions, autosuggestions, history search, async prompt, terminal UI

Status

Rush is effectively POSIX-compliant for the shell behavior covered by its conformance suite. It is not a certified POSIX implementation, and compatibility notes document intentional choices where POSIX, Bash, and system shells disagree.

See the conformance policy, compatibility notes, and builtin reference for details.

Build and install

Rush currently requires Zig 0.16. Zig fetches the declared dependencies from build.zig.zon.

git clone https://github.com/rockorager/rush
cd rush
zig build
zig build install --prefix "$HOME/.local" -Doptimize=ReleaseSafe

Run

zig build run
zig build run -- --posix -c 'echo hello'
./zig-out/bin/rush --help

--posix selects strict POSIX mode. Default Rush starts from the same POSIX core and enables selected compatibility and interactive features.

License

MIT.