$24
**Introduction**
In this programming assignment, you are going to implement your very own Linux shell that we will choose to call “Aggie Shell”. After all, the earliest OS interfaces were indeed the terminal shell or shell-like interfaces! The Linux/Ubuntu shell in your OS lets a user navigate through the file system and performs a wide variety of tasks using a series of simple commands. It also offers capabilities of inter-process communication and file input/out redirection. Your shell should have the ability to function almost as well as BASH. Each Linux command (e.g., cat, echo, cd, etc.) is to be run as child processes in this assignment. Most of these commands sit as executables in your system and are recognized by a call to an exec()-family function.
**Tasks**
Your tasks are to build a shell that supports the following:
- [ ] basic commands
- [ ] commands in a pipeline
- [ ] file input/output redirection
- [ ] multi-piped and redirection
- [ ] background processes
- [ ] directory handling
See the PA2 module on Canvas for further details and assistance.