This project consists of creating a simple shell, similar to a minimalist version of Bash. It is part of the curriculum at École 42, focused on understanding how a shell works at a low level, including process control, file descriptors, and terminal interactions.
Minishell was developed as a practical exercise in system programming. The goal was to implement a basic command-line interpreter capable of parsing and executing user commands.
This project provided hands-on experience with:
- Process creation and management (
fork,execve,waitpid) - File descriptor manipulation (
dup,pipe, redirections) - Signal handling (e.g.,
SIGINT,SIGQUIT) - Parsing and tokenization of user input
- Environment variable management
- GNU/Linux environment
- Makefile compatible build system
- GCC compiler
make./minishell- Execution of binary programs (with absolute or relative paths)
- PATH resolution for commands
- Redirections (>, >>, <)
- Pipes (|)
- Environment variables (env, export, unset)
- Built-in commands:
- echo
- cd
- pwd
- export
- unset
- env
- exit
- Signal management (handling Ctrl+C, Ctrl+, etc.)
- Error handling for invalid commands, syntax errors, and system errors
