This is the documentation for the Simple Shell project, developed as part of the curriculum at ALX SOFTWARE ENGINEERING PROGRAMME
The Simple Shell project aims to build a basic shell program that can interpret and execute commands entered by the user. It provides a command-line interface where users can interact with the shell by entering commands, and the shell executes those commands accordingly.
The main goals of this project are as follows:
- Develop a functional shell program capable of executing basic commands.
- Implement support for built-in commands such as
cd
,exit
, andenv
. - Handle command execution by creating child processes and using system calls such as
execve
andwait
. - Parse and tokenize user input to extract command and argument information.
- Implement features to support input/output redirection and piping of commands.
- Handle error scenarios gracefully and display meaningful error messages.
To use the Simple Shell, follow these steps:
- Clone the repository to your local machine.
- Compile the shell program using the provided Makefile.
- Run the shell program by executing the generated executable file.
- Enter commands at the prompt and press Enter to execute them.
- Enjoy the functionality of the shell, including built-in commands, input/output redirection, and command piping.
This Simple Shell project was developed by Alexander Agwuncha and Favour Favour. We worked together to design, implement, and test the various features of the shell.
The flowchart above illustrates the execution flow and decision-making process within the Simple Shell program.
The Simple Shell project provided an opportunity to gain a deeper understanding of operating system concepts, system calls, and process management. Through this project, we learned how to design and develop a basic shell program, handling user input, executing commands, and supporting advanced features. This project enhanced our knowledge of C programming, system calls, and the Unix/Linux environment.
We hope you find this Simple Shell project informative and useful. Feel free to explore the source code and try out the shell for yourself!