42sh
Nous avons recréé le shell Unix que les développeurs utilisent toute la journée : un shell compatible tcsh en C qui transforme chaque ligne de commande en arbre syntaxique et l'exécute, avec pipes, redirections, sous-shells, variables, alias, historique et jobs en arrière-plan, vérifié sortie par sortie face au vrai tcsh.
Équipe
4 personnes
Cadre
Projet Epitech, 1re année
Statut
Terminé
Contexte
Projet de programmation Unix de 1re année à Epitech : écrire un shell qui se comporte comme tcsh, avec la même sortie, les mêmes messages d'erreur et les mêmes codes de retour, en n'utilisant que des appels système comme fork, execve, pipe et dup2.
Réalisations
- Parseur qui construit un arbre syntaxique selon la priorité des opérateurs : ; et jobs en arrière-plan, puis ||, &&, redirections, pipes et sous-shells entre parenthèses
- Expansion des $variables et de $?, substitution `commande`, alias, historique !N et globbing *?[ ]
- Builtins : cd, env, setenv, unsetenv, set, unset, alias, unalias, which, where, repeat, history, jobs, fg, exit
- Contrôle des jobs par groupes de processus, et un script de test qui compare chaque cas avec tcsh
Résultats
15commandes intégrées
44tests unitaires
