- 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-C
to interrupt andCtrl-\
to quit a program, as well asCtrl-D
to 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
,unset
andexit
.
- 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 aminishell
executable. - 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-D
as 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/minishell
to 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~/.bashrc
file.
Done with a lot of 💜... aand C, by IttoSanzzo.