Ash is a super fast unix shell written in Rust
➜ lucbook ~/Documents/GitHub/AeroShell ➜
The command to start it is ash (or aero)
One-liner (Fedora/RHEL, Debian/Ubuntu, Arch/SteamOS are autodetected):
curl -sSL https://install.nebuff.xyz/ | bashOr with a package manager directly:
# Fedora / RHEL
sudo dnf install https://repo.nebuff.xyz/rpm/newest/aero-1.0.2-1.fc44.x86_64.rpm # or via repo file:
curl -sSL https://repo.nebuff.xyz/aero.repo | sudo tee /etc/yum.repos.d/aero.repo
sudo dnf install aero
# Debian / Ubuntu
curl -sSL https://repo.nebuff.xyz/aero.asc | sudo tee /usr/share/keyrings/aero.asc
curl -sSL https://repo.nebuff.xyz/aero.sources | sudo tee /etc/apt/sources.list.d/aero.sources
sudo apt update && sudo apt install aero
# Arch / SteamOS
curl -sSL https://repo.nebuff.xyz/aero.pacman.conf.snippet | sudo tee -a /etc/pacman.conf
sudo pacman -Sy aeroPackages install /usr/bin/ash and a /usr/bin/aero symlink
No package manager? (containers, older devices):
curl -sSL https://repo.nebuff.xyz/releases/aero-1.0.2-linux-x86_64.tar.gz -o /tmp/aero.tgz
mkdir -p ~/.local/bin && tar -xzf /tmp/aero.tgz -C ~/.local/bin --strip-components=2
~/.local/bin/ash # add ~/.local/bin to PATH if needed; 'aero' also worksRequires a Rust toolchain (rustup.rs).
cargo build --release
./target/release/aeroshellOnce installed via a package or cargo build --release, run:
ash --set-defaultThis registers the absolute path of the running ash binary in /etc/shells
(sudo if needed) and runs chsh -s <path> to make it your login shell. Log out
and back in to land in Ash
ash -c 'ls --show-hidden'To go back:
chsh -s /bin/bash # or any shell in /etc/shellsBuilt-in commands (also listed by help):
| Command | What it does |
|---|---|
ls [--show-hidden] [dir] |
List files in columns; dotfiles hidden unless --show-hidden |
cd [dir] |
Change directory (- = previous, ~ = home) |
pwd |
Print working directory |
history [n] |
Show recent commands (last n) |
export VAR=val |
Set a session environment variable |
unset VAR |
Remove a session environment variable |
alias <subcommand> |
Manage aliases: create <alias> <command…>, ls, rm <alias> |
type <cmd> / which <cmd> |
Show how a command resolves |
aepkg <subcommand> |
Manage packages (list, install, remove, reload, …) |
ver |
Show Ash version |
help |
Command list |
exit / quit |
Exit |
CLI flags: ash --help, ash --version, ash --set-default, ash -c '<cmd>'.
One-liners work like a POSIX shell: pipelines (|), sequencing (&&, ||,
;) and redirection (<, >, >>, 2>, 2>>, 2>&1, &>) all apply per
command, and builtins or package commands can be pipeline stages:
cargo build && ./target/release/aeroshell --help
ls -la > /tmp/out.txt && cat < /tmp/out.txt
false && echo skipped || echo ran
history 20 | tailEverything lives in ~/.aeroshell/:
config.json— settings, colors, aliaseshistory.txt— persistent command history (up/down arrows recall)
Handy session variables (export) survive per session; aliases are persistent
in config.json, e.g
alias create ll ls -la
alias create gs git status
alias ls
# gs -> git status
alias rm llThe prompt template is editable in config.json (prompt_template), with
placeholders {username} {hostname} {pwd} {short_pwd} {time} {date} {battery} {git} and any color name:
"<magenta>➜</magenta> <cyan>{short_pwd}</cyan> <blue>{git}</blue> <green>➜</green> "
Standard ANSI names (red green blue yellow magenta cyan white bold italic underline dim highlight, plus extras like orange purple teal) all work in
the template.
Ash packages add Lua commands, completions, colors, aliases, prompt pieces and hooks. Install one from a local directory and use its commands right away:
aepkg install examples/packages/hello
aepkg install /user/repo # GitHub shorthand
aepkg install https://github.com/user/repo # or a .tar.gz / .zip link
hello Neo --loud
aepkg listSee docs/packages.md for the manifest format and Lua API.
AeroShell keeps all its state in ~/.aeroshell/:
config.json— settings, colors, aliaseshistory.txt— command historypackages/— installed package trees andindex.json
Delete the directory to reset Ash to defaults.
Issues and PRs welcome, target the main branch. Keep changes small and
matching the existing style, cargo build with no warnings
git clone https://github.com/Aero-Shell/Shell.git AeroShell
cd AeroShell
cargo build
cargo runCode layout:
src/main.rs— REPL, arg parsing, pipelines, login-shell handlingsrc/commands/builtins.rs— built-in commandssrc/commands/aepkg.rs— package manager commandsrc/config.rs— config, themes, prompt renderingsrc/packages/— manifests, installed index, package loading, Lua bridgesrc/registry.rs— command registry