liljencrantz/crush
Crush is a command line shell that is also a powerful modern programming language.
{ "createdAt": "2019-09-29T22:27:32Z", "defaultBranch": "master", "description": "Crush is a command line shell that is also a powerful modern programming language.", "fullName": "liljencrantz/crush", "homepage": "", "language": "Rust", "name": "crush", "pushedAt": "2025-08-17T18:55:03Z", "stargazersCount": 1881, "topics": [], "updatedAt": "2025-11-22T01:59:23Z", "url": "https://github.com/liljencrantz/crush"}Crush is an attempt to make a traditional command line shell that is also a modern programming language. It has the features one would expect from a modern programming language like a type system, closures and lexical scoping, but with a syntax geared toward both batch and interactive shell usage.
- [The overview]!(docs/overview.md) gives a detailed overview of the features of Crush.
- [The syntax documentation]!(docs/syntax.md) contains more a detailed description of the Crush syntax than what fits into the overview document.
- [The configuration documentation]!(docs/config.md) describes how to configure Crush.
- [The hacking documentation]!(docs/hacking.md) will eventually give you enough information about the inner workings of Crush to start hacking yourself.
Building and installing Crush
Section titled “Building and installing Crush”OS X dependencies
Section titled “OS X dependencies”- Install Brew.
- Install openssl
brew install openssl - Install protobuf
brew install protobuf - Install git
xcode-select --install
Ubuntu dependencies
Section titled “Ubuntu dependencies”- Update apt index
apt update - Install dependencies
apt install build-essential git curl pkg-config libssl-dev libdbus-1-dev libsystemd-dev
Install Rust
Section titled “Install Rust”Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shAdd it to your path
PATH=$PATH:$HOME/.cargo/binCompile and install crush
Section titled “Compile and install crush”clone this repository,
git clone https://github.com/liljencrantz/crush.gitand run
cd crush && cargo build --release && cargo install --path .and you should have a working binary to try out in ~/.cargo/bin.
That directory should already be in your path, so just write crush to run
the shell.
Have fun!