2021.07.19 ~ 2021.09.24
minishell is from 42 subject.
it's like bash shell.
this is graded 101.
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)
• It must implement the builtins: ◦ echo with option -n ◦ cd with only a relative or absolute path ◦ pwd with no options 4 Minishell As beautiful as a shell ◦ 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 $.
• Redirections: ◦ < should redirect input. ◦ > should redirect output. ◦ “<<” read input from the current source until a line containing only the delimiter 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 expands to the exit status of the most recently executed foreground pipeline.
• ctrl-C ctrl-D ctrl-\ should work like in bash.
• When interactive: ◦ ctrl-C print a new prompt on a newline. ◦ ctrl-D exit the shell. ◦ ctrl-\ do nothing.