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 π’