- It is a fully functional Shell for Linux Terminals, and works just as any other famous shell, with features primarily based on Bash, Zsh and Fish.
- It was done in the C Programming Language for the Rio's Ecolle 42 minishell project.
- Also, there where some limitations, regarding libraries permitted or not, and according to 42's Coding Norme, imposed in the project.
- Perfectly capable of parsing a prompt and launching executables with arguments.
- It as suport to piping between executables.
- Any common token will work as intended, except for
&&and||, which weren't needed, but won't cause any error. - Quotes like
""and''work the same as Bash. - You can separate commands with
;, as well as use redirections>,<,>>,<<and pipes|. - Environment variables are handled, and expand to it's values when used, like
$HOME, including the return code$?. - You can use
Ctrl-Cto interrupt andCtrl-\to quit a program, as well asCtrl-Dto throw an EOF, same as in bash. - A few of the built-in functions where made as well, meaning we don't call the executable, I re-coded them directly. It's the case for
echo,pwd,cd,env,export,unsetandexit.
- You will need the external "readline" library installed in your machine.
- It functions just as any other shell program would. Simply clone the repository, and then compile it using
make. It will then generate aminishellexecutable. - Running this program will change the shell you're currently in, to the minishell.
./minishell- In it, you're able to do about anythink you would be in another common shell, for example, using commands from the enviromental path, such as
ls,echo, andexit, which ends the program.
- And as the minishell was done to be able to recognize terminal signals, it can be ended pressing
CTRL-Das well, like Bash.
To use it as your default Shell, you will need to, either:
- Move the executable to the /bin/bash directory, and then change your Terminals default shell to it, if it's supported.
or
- Add a line containing
/path/to/executable/minishellto the end of whatever "rc" file your current Shell uses. For example, if it's Bash, then you will need to add that line at the end of your~/.bashrcfile.
Done with a lot of 💜... aand C, by IttoSanzzo.

