2026-02-14 17:55:37 +01:00
2026-02-14 17:55:37 +01:00
2026-02-14 17:37:22 +01:00
2026-02-14 17:55:37 +01:00
2025-07-31 03:22:38 +02:00
2026-02-09 22:48:12 +01:00
2026-02-14 17:53:44 +01:00

minishell

A simple bash-like shell written in C.

Score Language
Last commit

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

  1. Clone the repository:

    git clone https://github.com/sdevsantiago/minishell.git
    cd minishell
    
  2. Compile the project:

    make        # Full compilation
    
  3. 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

  1. Execute the shell
./minishell
  1. Interact with it like if it was bash
echo "Hello, World!"
...
cat groceries.txt | grep tomatoes
...
echo "Greetings $USER!" > greetings.txt

📏 Norminette

The code strictly complies with 42's Norminette v4:

norminette *.c *.h

More info in the official Norminette repository.

🙇‍♂️ Special thanks

⚖️ License

This work is published under the terms of 42 Unlicense. This means you are free to use, modify, and share this software.

Description
No description provided
Readme 4.7 MiB
Languages
C 92.6%
Makefile 4.4%
Shell 3%