A tiny shell project implemented from scratch without external dependencies. The purpose of this project was to:
- understand how parsing works
- understand signal handling, process groups and controlling terminals
- implement job control
The shell's expressions are minimal and currently only support IO redirection and pipelining.
statement -> expression [PIPE expression]* [AMPERSAND]
expression -> COMMAND [ARG]* [redirection]*
redirection -> operator STREAM
operator -> IN | OUT | APPEND