ℹ️ About Project
The purpose of this project is to create a simple bash-like shell.
minishell is a minimal bash-like shell implementation written in C. It provides essential shell functionality including command execution, piping, input/output redirection, and built-in commands.
Key Features
- Command Execution: Execute external programs with argument parsing and path resolution.
- Pipelines: Connect multiple commands using the pipe operator (
|). - Redirections: Support for input (
<), output (>), and append (>>) file redirections. - Built-in Commands:
cd,echo,env,exit,export,pwd,unset. - Environment Variables: Access and manage shell environment variables.
- Interactive Shell: Read-Evaluate-Print Loop (REPL) powered by GNU Readline.
- Quote Handling: Proper handling of single and double quotes for literal strings.
Development
The codebase adheres to Norminette v4 standards and uses a modular architecture separating parsing, execution, and built-in command logic. Build artifacts are automatically generated; refer to AGENTS.md for detailed development guidelines.
For detailed info, refer to this project subject.
🚀 Getting Started
Prerequisites
- GCC compiler
- Make utility
- Unix-like system (Linux, macOS, WSL)
Install prerequisites
-
APT
sudo apt install build-essential libreadline-dev -
Pacman
sudo pacman -Sy base-devel readline-devel
🔧 Build
-
Clone the repository:
git clone https://github.com/sdevsantiago/minishell.git cd minishell -
Compile the project:
make # Full compilation -
Clean build files:
make clean # Remove object files
Available Make Targets
| Command | Description |
|---|---|
make |
Compiles all |
make all |
Same as make |
make clean |
Remove object files (*.o) |
make fclean |
Remove object files and binaries |
make re |
Clean and rebuild everything |
👨💻 Usage
Basic Usage
INSTRUCTIONS
📏 Norminette
The code strictly complies with 42's Norminette v4:
norminette *.c *.h
More info in the official Norminette repository.
🙇♂️ Special thanks
- lrcouto and ayogun for creating and publishing, respectively, the 42-project-badges repository.
- gcamerli for creating the 42unlicense repository.
⚖️ License
This work is published under the terms of 42 Unlicense. This means you are free to use, modify, and share this software.