Minishell is a project that aims to create a simple UNIX command-line shell. This project introduces students to the world of shells by implementing a mini version of bash.
- Parse and execute basic shell commands;
- Search & launch the right executable from absolute or relative path;
- Command history;
- Handle built-in commands (
cd
,echo
,pwd
,export
,unset
,env
,exit
); - Support for pipes (
|
) and redirections (<
,>
,>>
,<<
); - Environment variable
- export variables;
- unset variables;
- expand environment variables;
- Signal handling (
Ctrl-C
,Ctrl-D
,Ctrl-\\
);
Clone the repository and cd into it:
git clone https://github.com/PedroZappa/42_minishell.git 42_minishell
Build the program:
cd 42_minishell
make
Run the program:
./minishell
Run the following command and look at the Test Rules 🧪
& Debug Rules
to get a comprehensive list of all available test/debug commands:
make help
Note
If you use tmux
you are in for treat 😏
- Bash Reference Manual
- Writing your own shell
- Shell Command Language
- Exit Codes and Their Meanings - Discovery Cluster / Slurm - USC Advanced Research Computing
This work is published under the terms of 42 Unlicense.