rash, the rat ass shell, is a rudimentary shell written in C
Find a file
2026-01-18 12:55:07 -07:00
.woodpecker add more stages to pipeline 2025-10-22 16:24:19 -06:00
doc better example in docs 2026-01-17 23:49:36 -07:00
examples update ssh_agent example 2026-01-17 23:06:39 -07:00
src dont warn about job control unless you're in interactive mode 2026-01-18 12:55:07 -07:00
.clang-format make format 2025-10-22 16:23:41 -06:00
.clang-tidy it works! 2026-01-17 18:40:08 -07:00
.envrc Add nix direnv, package, and fix an unused result Werror 2025-03-04 16:34:13 -07:00
.gitignore restructure some files (along with fixes for clangd) 2026-01-08 13:05:57 -07:00
flake.lock update flake.lock 2026-01-17 23:06:31 -07:00
flake.nix add bear to nix dev shell 2026-01-11 11:10:22 -07:00
LICENSE Initial commit 2025-01-29 02:12:44 -07:00
Makefile bump version 2026-01-18 12:33:27 -07:00
package.nix bump version 2026-01-18 12:33:27 -07:00
README.md update readme 2026-01-08 16:44:21 -07:00

rash logo

rash, the rat ass shell, is a rudimentary shell written in C.

Features

While not as featureful as other shells, rash is still very usable.

Some of rash's current features include:

  • Environment variable modification
  • Shell variables
  • Globbing (using wildcards to match files)
  • Auto Completion
  • Job management
  • Storing command history
  • Custom prompts
  • ...and much more!

Getting Started

To build rash, take a look at the build guide.

Once you have built rash, feel free to take a look at the user guide.

Setting up clangd

To setup clangd for this project, you will need to generate a compile_commands.json file.

For this, I use Bear, but you can use other tools if you're more familiar with them.

make clean # make sure no build files exist so that bear knows how to compile all source files
bear -- make # this will generate a compile_commands.json in the root of the project

You can also specify make flags here, for example:

bear -- make ERROR_HELL=1 # this will generate a compile_commands.json with all errors enabled (not recommended for development)

For more if more info on make flags, check out the build guide.

Once you have a compile_commands.json file in the root of the project, clangd should work fine.