Portable scripts stay portable
rush --posix targets POSIX.1-2024 / Issue 8: shell language, expansion, redirection, job control, and builtins.
POSIX where it matters. Friendly where you live.
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.
~/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
rush --posix targets Issue 8 shell semantics.rush --posix targets POSIX.1-2024 / Issue 8: shell language, expansion, redirection, job control, and builtins.
Default Rush keeps valid POSIX scripts meaningful while accepting selected Bash-shaped extensions for migration and interactive use.
Emacs and vi editing modes, styled diagnostics, fish-style abbreviations, and structured completions are built in.
Prompt segments can fetch Git state, tool versions, or project metadata in the background while Rush keeps the editor usable.
Rush suggests likely commands inline from SQLite history, using current-directory context before falling back to global matches.
Rush probes capabilities and uses synchronized output, Unicode grapheme widths, bracketed paste, modern keys, and color-scheme reports when available.
Configuration, autoloaded functions, and state live in XDG locations, with sensible $HOME fallbacks for systems that do not set them.
Command history is stored in SQLite with FTS-backed search, timestamps, status, duration, hostname, session, and current-directory context.
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
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.
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
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.
MIT.