42sh is one of the three big projects ending the 1st year at Epitech. It follows the Minishell 1 and 2 that were introducing us to the baiscs of a shell.
From 7 may 2023 to 11 may 2023
The goal of this project was to recreate a terminal in C based on tcsh. Unlike previous Epitech projects, we were authorized to use the whole libc which allowed us to discover a plurality of new functions that we never heard of before or even other assiociated libs as termios.h
in our project.
We achieved to implement a lot of features in this project:
- The basics:
- Command execution
- Error handling
- Return values
- Separators (; && ||)
- Redirections (only > and >>)
- The builtins:
- Setenv
- Unsetenv
- Cd
- Echo (our school wanted us to redo the command we don't know why)
- Alias
- Unalias
- History
- Exit
- Some add-ons:
- Being able to navigate through the string with the left and right arrows
- display the last command used with the up arrow, same on the other way with the down arrow
- autocomplete the command when pressing tab and the string is not empty
- display the current folder files when pressing tab
- A personnalized prompt
- We still need to improve our shell with these few things:
- Pipes
- Left redirections (< and <<)
- Globbings (*, ? or !)
- Improve our inhibitors (only detect basic characters as \n or \t for example)
- Local variables
In the repository you can find a tests folder that will help you testing your project. This is the tester given by Epitech but with more tests availables. I also changed the tester.sh file to be more efficient but I'm not the best with scripting so do not hesitate to make it further!
This project was pretty fun to do, even if we were only three to work on it (instead of 4 or 5 persons). We got 52.8% at our final test with a crash but I already fixed them all. If you have any question about this project do not hesitate to contact me through my github account!
- @CapucheGianni - Epitech 1st year student
- @ElouanR - Epitech 1st year student
- @ArthurBchr - Epitech 1st year student