Minishell
Un shell minimaliste en C
Un shell minimaliste en C
Minishell est un projet pédagogique réalisé dans le cadre du cursus de l'École 42. L'objectif principal est de recréer, en langage C, un shell Unix minimaliste — c'est-à-dire un interpréteur de commandes similaire à bash
ou zsh
, mais limité à un socle de fonctionnalités fondamentales.
Le shell est l'interface texte par excellence pour interagir avec le système d'exploitation. Il traduit les instructions utilisateur en appels systèmes (syscalls) capables d'exécuter des programmes, manipuler des fichiers, configurer l'environnement logiciel, ou automatiser des suites d'opérations.
Ce projet permet de se confronter à de nombreux aspects essentiels du développement système sous Unix :
Les objectifs pédagogiques du projet sont multiples :
fork
, execve
, dup2
, etc.)Commande | Fonctionnalité |
---|---|
echo |
Affichage de texte avec gestion de l'option -n |
cd |
Changement de répertoire avec gestion du home |
pwd |
Affichage du répertoire courant actualisé |
export / unset |
Manipulation des variables d'environnement |
env |
Affichage de l'environnement courant |
exit |
Fermeture du shell avec code de retour |
$PATH
fork
/exec
sur les commandes non internes# Exemples de redirections supportées
command > output.txt # Redirection de sortie
command >> output.txt # Redirection en mode append
command < input.txt # Redirection d'entrée
command1 | command2 # Pipe entre deux commandes
|
)echo $USER
)~
)'
) et doubles ("
)Le projet est structuré en deux modules principaux :
[Entrée utilisateur] → [Lexer] → [Parser] → [AST] → [Expansion] → [Exécution]
$VAR
, $?
)Pour la commande : ls -l | grep test > result.txt
ls -l
et grep test > result.txt
grep
vers result.txt