El proyecto Minishell, creado por nosotros alumnos de 42 Madrid m-allera y frromero, tiene como objetivo crear una versión simplificada de una shell de Unix replicando su funcionamiento. Este proyecto forma parte del programa de 42 Madrid (Campus de programación) y se realiza en pareja, fomentando la colaboración y el trabajo en equipo.
La Minishell permite a los usuarios ejecutar comandos básicos de Unix, gestionar procesos y manejar redirecciones de entrada y salida. A lo largo del desarrollo del proyecto, se han implementado diversas funciones y archivos que replican el comportamiento de una shell real, proporcionando una experiencia de usuario similar a la de una terminal estándar.
Esto incluye:
Permitir a los usuarios ejecutar comandos (built-in o comandos propios) como ls, echo, cd, pwd, export, unset, env y exit. Estos comandos son fundamentales para la interacción con el sistema operativo y la gestión de archivos y directorios.
Implementar la capacidad de manejar procesos en primer y segundo plano. Esto incluye la creación de procesos hijos mediante llamadas al sistema como fork y la espera de su finalización con wait y waitpid.
Soportar redirecciones de entrada (<), salida (>) y pipes (|). Estas características permiten a los usuarios redirigir la entrada y salida de los comandos, así como encadenar múltiples comandos para realizar operaciones más complejas.
Manejar señales como Ctrl+C (SIGINT) para interrumpir la ejecución de comandos y Ctrl+D (EOF) para finalizar la shell. La correcta gestión de señales es crucial para proporcionar una experiencia de usuario fluida y predecible.