Minishell is a minimalistic shell implementation created as part of the 42 programming school curriculum. This project aims to provide a deep understanding of Unix shell behavior by building a functional shell from scratch. The shell supports command execution, environment variable management, and pipeline operations, mimicking the behavior of Bash.
This project was developed collaboratively by Tayfunkas and kyla-kang, highlighting the importance of teamwork and shared problem-solving in software development.
- Command Execution: Execute binary commands from paths defined in the
PATHenvironment variable. - Built-in Commands: Implementation of essential shell built-in commands such as
echo,cd,pwd,export,unset,env, andexit. - Pipelines: Support for command pipelines (
|) to connect the output of one command to the input of another. - Redirections: Input (
<), output (>), and append (>>) redirection capabilities. - Signal Handling: Graceful handling of signals like
Ctrl+C,Ctrl+D, andCtrl+\, ensuring a user-friendly experience. - Environment Variables: Management and expansion of environment variables.
- Error Handling: Proper handling and display of error messages to mimic Bash-like behavior.
- System Programming: Deep dive into system calls such as
fork,exec,pipe, anddup2. - Process Management: Creating, managing, and synchronizing child processes.
- Shell Behavior: Understanding and implementing the core functionality of a Unix shell.
- Team Collaboration: Working effectively with a partner to design, implement, and debug a complex program.
