isksh is a cross-platform shell written in Rust. It targets the POSIX.1-2024 Shell Command Language and supports practical Bash syntax used by common dotfiles and command-line tools.
The project is under active development and is not yet fully POSIX- or Bash-compatible. See POSIX-COMPATIBILITY.md for known differences.
With Rust and Cargo:
cargo install isksh --lockedStandalone release binaries are available from GitHub Releases.
With aqua, after the package is available in the Standard Registry:
aqua g -i isksss/isksh
aqua installisksh SCRIPT [ARG...]
isksh -c COMMAND [NAME [ARG...]]
isksh -s [ARG...]
isksh -iRunning isksh without arguments starts interactive mode when standard input is a terminal; otherwise it reads a script from standard input.
- Commands, pipelines, redirections, here-documents, functions, loops, conditionals, and background jobs
- POSIX parameter, command, arithmetic, field-splitting, and pathname expansion
- Interactive editing, history, completion, prompt expansion, and
Ctrl+Rsearch - Common Bash features including arrays,
[[ ... ]], process substitution, aliases, and frequently used built-ins - Interactive command abbreviations with fish-style
abbr -a NAME EXPANSION - Bash-style initialization for Starship, mise, zoxide, Atuin, and fzf
- Native terminal handoff for Vim, Neovim, and other full-screen applications
- UTF-8 scripts with LF or CRLF line endings
Interactive startup reads the first available file below:
ISKSH_RC$XDG_CONFIG_HOME/isksh/.iskrc$HOME/.config/isksh/.iskrc$HOME/.bashrcas a compatibility fallback
| Platform | Architectures | Support |
|---|---|---|
| Linux | x86_64, aarch64 | Tested; fully static musl binaries |
| Windows 11 | x86_64 | Tested; static GNU CRT, Windows system DLLs only |
| macOS | x86_64, aarch64 | Cross-target compile checks only |
Development is containerized; Rust does not need to be installed on the host.
docker compose build dev
docker compose run --rm dev mise run check-allcheck-all runs formatting, Clippy, tests, 100% line-coverage enforcement, cross-target checks, release builds, and static dependency verification. Windows host behavior is tested with:
.\scripts\windows-smoke.ps1Pushing a vX.Y.Z tag matching the Cargo package version publishes the crate through crates.io Trusted Publishing, then creates the GitHub Release.
Licensed under either MIT or Apache-2.0.