Minishell is a lightweight, custom-built shell developed as part of the 42 curriculum. It replicates the core functionality of bash, providing a robust environment for command execution, pipelining, and environment management.
Designed with a focus on memory efficiency and architectural clarity, Minishell serves as a deep dive into systems programming, process management, and lexical analysis.
- Built-in Commands: Optimized implementations of
cd,echo,env,exit,export,pwd, andunset. - Execution Engine: Support for multiple pipelines (
|) and complex redirections (<,>,<<,>>). - Environment Management: Dynamic tracking and expansion of environment variables.
- Signal Handling: Responsive management of
SIGINT,SIGQUIT, andEOF. - Robust Memory Management: Integrated custom garbage collector to ensure zero leaks.
- A C compiler (
gccorclang). makeutility.readlinelibrary.
git clone https://github.com/yourusername/minishell.git
cd minishell
make./minishellFor developers and curious users, detailed technical documentation is available in the docs/ directory:
- Architecture Overview: Understand the internal lifecycle of a command.
- Built-in Commands: Detailed usage and behavior of core shell commands.
- Execution Engine: Deep dive into process management, pipes, and redirections.
Contributions are welcome! If you find a bug or have a feature request, please open an issue or submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
