For this project, the assignment is :
This project is about creating a simple shell. Yes, your own little bash. You will learn a lot about processes and file descriptors.
It is a team project where you will create a basic shell program in C. It implements redirections and pipes, as well as environment variable expansions and the cd, echo, env, exit, export, pwd and unset builtin commands.
Minishell is a miniature shell program based on Bash. Minishell supports:
- Prompt display
- Command history (up and down arrows)
- System executables available from the environment (
ls
,cat
,grep
, etc.) - Local executables (
./minishell
) - Builtin commands :
echo
(and option-n
)
cd
(with only a relative or absolute path)
pwd
(no options)
export
(no options)
unset
(no options)
env
(no options or arguments)
exit
(with exit number but no other options) - Pipes
|
which redirect output from one command to input for the next - Redirections:
>
redirects output
>>
redirects output in append mode
<
redirects input
<< DELIMITER
displays a new prompt, reads user input until reachingDELIMITER
, redirects user input to command input (does not update history) - Environment variables (i.e.
$USER
or$VAR
) that expand to their values.
$?
expands to the exit status of the most recently executed foreground pipeline. - User keyboard signals:
ctrl-c
displays a new prompt line.
ctrl-d
exits minishell
ctrl-/
does nothing
However, Minishell does not support/
,;
,&&
,||
, or wildcards.
In order to compile :
make
Execution :
./minishell (anything from listed above)
Exemple =
./minishell cat Makefile | grep o > out