The Reckless Racket Shell
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Rash: The Reckless Racket Shell

Scribble Docs

Rash is a shell language, library, and REPL for Racket.

Use as a repl that is as convenient for pipelining programs as Bash is, but has all the power of Racket. Use as a scripting language with #lang rash. Embed in normal Racket files with (require rash), and mix freely with any other Racket language or library.

Rash is in active development, but it is largely stable (and the parts that aren't are marked as such). I use it as my default interactive shell on my laptop. It currently lacks the interactive polish of Zsh or Fish, but it is so much better as a language. Every script I've ported from a bourne-related shell to Rash is more robust, simpler, easier to maintain, easier to expand, and much more fun.

Getting started


Rash does work on windows, but it works better and is more useful on unix based systems.

To install, you will need a working instalation of racket v6.12 or later.


You can either install with racket's built in package manager, raco, or install directly from github. If you have DrRacket installed, you can install rash with File -> Install Package.

via raco:

raco pkg install rash

git version:

git clone rash && cd rash/linea && raco pkg install && cd ../shell-pipeline && raco pkg install && cd ../rash && raco pkg install


use raco pkg install --clone rash


Run with racket -l rash/repl --, or with rash-repl if you have Racket's package bin/ directory on your path.

Online documentation is here. After installation, local documentation can be accessed with raco docs rash.

Here's a quick demo video of Rash in action: asciicast

I published a paper about Rash in GPCE 2018.

This repo also contains the shell-pipeline and linea packages. They mostly support Rash itself, so they live in the same repo.


Feel free to ask questions in issues, to join the matrix room, to email me, etc.