Skip to content

carvalho-ra/Minishell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

325 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Minishell

This project consists of creating a simple shell, similar to a minimalist version of Bash. It is part of the curriculum at École 42, focused on understanding how a shell works at a low level, including process control, file descriptors, and terminal interactions.

💡 About the project

Minishell was developed as a practical exercise in system programming. The goal was to implement a basic command-line interpreter capable of parsing and executing user commands.

This project provided hands-on experience with:

  • Process creation and management (fork, execve, waitpid)
  • File descriptor manipulation (dup, pipe, redirections)
  • Signal handling (e.g., SIGINT, SIGQUIT)
  • Parsing and tokenization of user input
  • Environment variable management

🛠️ Usage

Requirements

  • GNU/Linux environment
  • Makefile compatible build system
  • GCC compiler

Build

make

Run

./minishell

📋 Features

  • Execution of binary programs (with absolute or relative paths)
  • PATH resolution for commands
  • Redirections (>, >>, <)
  • Pipes (|)
  • Environment variables (env, export, unset)
  • Built-in commands:
    • echo
    • cd
    • pwd
    • export
    • unset
    • env
    • exit
  • Signal management (handling Ctrl+C, Ctrl+, etc.)
  • Error handling for invalid commands, syntax errors, and system errors

👥 Authors:

caesar
rodrigo

📸 Demonstration

minishell.gif

About

This project aims to develop a basic shell, similar to a customized version of bash.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors