About · Index · Usage · Useful Links
This project is focused on creating a minimalistic shell, which is a program that allows users to interact with their operating system by typing commands. By participating in this project, individuals can learn how to create a functional and efficient shell that performs tasks such as running programs, managing input and output, and handling errors.
The objectives of the project are:
- Create a program that simulates a shell.
- Handle errors and signals.
- Handle environment variables.
- Handle local variables.
- Handle simple redirections (< and >).
- Handle pipes (|).
The implemented features in this project are:
- Handling errors and signals.
- Handling environment variables.
- Handling local variables.
- Handling simple redirections (< and >).
- Handling advanced redirections (<< and >>).
- Handling pipes (|).
- Handling the "echo" command.
- Handling the "cd" command.
- Handling the "env" command.
- Handling the "export" command.
- Handling the "unset" command.
- Handling the "exit" command.
Bonus Part :
- Handling logical operators (&& and ||).
- Handling globbing with * in the current repository.
The non-implemented features in this project are:
- Handling the semi-colon command separator ;
The Minishell project at École 42 was an excellent opportunity to put into practice the programming skills acquired throughout the curriculum. Handling errors and signals, environment variables, local variables, redirections, and pipes was a very enriching experience and helped to better understand how a shell works.
1. Compiling & Executing the program
To compile and execute the program, run:
$ make
$ ./minishell3. Special Compiling Rules
To compile the program with fsanitize, run:
$ make debug
$ ./minishellTo compile the program with valgrind, run:
$ make leaksor:
$ make leak_all