1.1 KiB
1.1 KiB
arsh - ARchaic SHell
Since I started using GNU/Linux, I always wondered, how do shells work and what exactly are they responsible for.
In order to learn it (and also to learn some C) I decided to make a simple shell for UNIX-like systems in C and try to implement some of the features, that other shells like bash, zsh, fish, etc have. And also I wanted to have the whole source code in a single .c file, that uses no external dependencies, other than the standard C library.
Features
Some of the implemented features are:
- You can pipe stdout of one command to stdin of another (ex.
cat main.c | wc --lines) - You can redirrect output/input with
>,>>,<,2>,&> - Variables expansion with
$PATHand${HOME}syntax - Shows custom prompt, if
PS1env variable is set - Run subcomands with
$(hostname)or`pwd`(works with pipes) - Custom
readlinefunction with support for cursor moving (<-, ->) and inline editing - Run the shell in interactive and non interactive mode