minishell

Your shell should:
β€’ Not interpret unclosed quotes or unspecified special characters like \ or ; 🟒
β€’ Not use more than one global variable, think about it and be ready to explain why you do it 🟒
β€’ Show a prompt when waiting for a new command 🟒
β€’ Have a working History 🟒
β€’ Search and launch the right executable (based on the PATH variable or by using relative or absolute path) 🟒
β—¦ echo with option -n 🟒
β—¦ cd with only a relative or absolute path 🟒
β—¦ pwd with no options 🟒
β—¦ export with no options 🟒
β—¦ unset with no options 🟒
β—¦ env with no options or arguments 🟒
β—¦ exit with no options 🟒
β€’ ’ inhibit all interpretation of a sequence of characters 🟒
β€’ " inhibit all interpretation of a sequence of characters except for $ 🟒
β—¦ < should redirect input.
β—¦ > should redirect output.
β—¦ β€œ<<” read input from the current source until a line containing only the de- limiter is seen. it doesn’t need to update history!
β—¦ β€œ>>” should redirect output with append mode.
β€’ Pipes | The output of each command in the pipeline is connected via a pipe to the input of the next command.
β€’ Environment variables ($ followed by characters) should expand to their values 🟒
β€’ $? should expand to the exit status of the most recently executed foreground pipeline 🟒
β—¦ ctrl-C print a new prompt on a newline 🟒
β—¦ ctrl-D exit the shell 🟒
β—¦ ctrl-\ do nothing 🟒