# Minishell #
Through the Minishell project, you will get to the core of the Unix system and explore an important part of this system’s API: process creation and synchronisation. Executing a command inside a shell implies creating a new process, which execution and final state will be monitored by its parent’s process.
Builtins: echo, cd, env, setenv, unsetenv and exit.
Bonus:
- Signals handlers (Ctrl + C and Ctrl + D)
- ';' for multiple commandes
- Check the rights to every executable called (user rights in Path)
##### Road Map #####
- Starting the shell loop(base) (DONE)
- studying new functions offered by the project (DONE)
- Initialization and copy of env variables (DONE)
- Implementation of struct for environmment variables (DONE)
- Initialization of builtin cd and echo (DONE)
- Implementation of builtin of env (DONE)
- Leak checks (DONE)
- Finishing environnement variables management:
* Function add new env var (DONE)
* Function del env var (DONE)
* Function env (DONE)
- Readapt main function: use execute_switch (DONE)
- Norme the functions already done (DONE)
- Review gnl function (DONE)
- Finish all todo and in progress post above (DONE)
- Implementing the shell exit properly (DONE)
- Studying error prompt (DONE)
- Implementing free function for the char **cmd and input (DONE)
- Implementing switch command function (DONE)
- Starting function for executable within PATH (DONE)
- Clean project: reposition functions (DONE)
- Implementing final main function (DONE)
- Valgrind full test for leak and clear all error and leaks (DONE)
- Implement flag for all builtin functions (DONE)
- Add $, ~ management (DONE)
- Implement signal handler (DONE)
- Solve valgrind error gnl (DONE)
- Redo Libft makefile (DONE)
- Rewrite of input read function (DONE)
- Delete gnl and check leak (DONE)
- Implement env builtin with flag (DONE)
- Check libft (DONE)
- Finish flag for cd builtin (DONE)
- Check pipe and file input (DONE)
- Regulate Shell level env (DONE)
- Regulate exec of name similar to existing executable (DONE)