Minishell is a simplified shell implementation, providing a command-line interface where users can interact with the operating system by executing various commands. The command line parsing is made recursively using a lexer parsing the line into tokens, building an AST.
- Executables search from PATH and launch: executes a wide range of commands, including both built-in commands and external commands available in the system.
- Built-in commands: custom implementation of common binaries such as cd, echo, pwd, exit, export, env, and unset.
- Redirection and Pipes: supports input/output redirection and pipes, allowing users to redirect command input and output streams.
- Signal Handling: handles various signals such as Ctrl-C, Ctrl-D and Ctrl-, providing a graceful termination of running commands.
- Env management: manage environment variables, set new variables, and modify existing ones using the built-in commands.
- Environment variables expansion
- heredoc
- double quotes and single quotes
- interactive mode
- Command History
- $?
gcl https://github.com/GSantoine/minishell.git
cd minishell
make
./minishell
The use of readline() cause memory leaks.