I have worked on this project with my teammate jmoutous.
minishell is a small-scale command-line interpreter, inspired by the Unix shell, created as part of the 42 school curriculum. It provides a basic set of features commonly found in popular shells such as Bash or Zsh, allowing users to execute various commands and manage processes in a Unix-like environment.
The main goal of minishell is to provide a solid foundation for understanding and implementing fundamental shell functionalities. It offers a simplified shell experience, enabling users to navigate the file system, execute commands with arguments and options, handle environment variables, and perform input/output redirection.
- Command execution: minishell supports executing both built-in commands (e.g.,
echo
,cd
,env
) and external commands available in the system. - Input/output redirection: Users can redirect the input and output of commands to files, enabling file manipulation and command chaining.
- Environment variables: minishell allows users to manage environment variables, set new ones, and expand them in command arguments.
- Signal handling: The shell handles basic signals such as Ctrl+C, allowing users to terminate running processes or perform specific actions.
- Command line editing: minishell provides line editing capabilities, including history navigation and basic editing features.
This project serves as an excellent opportunity to dive into the inner workings of a shell and gain a deeper understanding of process management, file handling, and system calls. Whether you are a beginner exploring the world of shell programming or an experienced developer honing your system-level skills, minishell offers an educational and hands-on experience.
Note: This project was developed as part of the 42 school curriculum and should be considered a learning exercise rather than a fully-featured production-ready shell.
git clone
do make