Files
minishell/README.md

4.1 KiB
Raw Blame History

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

INSTRUCTIONS

📏 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.