rash, the rat ass shell, is a rudimentary shell written in C
  • C 97.6%
  • Nix 1.1%
  • Makefile 1.1%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Parker Macdonald 24cd16f781
All checks were successful
ci/woodpecker/push/build/1 Pipeline was successful
ci/woodpecker/push/build/2 Pipeline was successful
ci/woodpecker/push/build/3 Pipeline was successful
ci/woodpecker/push/build/4 Pipeline was successful
ci/woodpecker/push/build/5 Pipeline was successful
ci/woodpecker/push/build/6 Pipeline was successful
ci/woodpecker/push/lint Pipeline was successful
fix linter and pipeline things
2026-08-20 22:17:41 -06:00
.woodpecker fix linter and pipeline things 2026-08-20 22:17:41 -06:00
doc update docs 2026-07-04 21:04:42 -06:00
examples update ssh_agent example 2026-01-17 23:06:39 -07:00
src fix linter and pipeline things 2026-08-20 22:17:41 -06:00
test use _generic for buffer methods 2026-07-27 22:21:33 -06:00
.clang-format make format 2025-10-22 16:23:41 -06:00
.clang-tidy fix linter and pipeline things 2026-08-20 22:17:41 -06: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 lock file 2026-06-16 20:59:28 -06: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 fix linter and pipeline things 2026-08-20 22:17:41 -06:00
package.nix bump version 2026-07-28 22:06:13 -06: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.