- historically the outer hull of the operating system
- users cannot get to the kernel, they can only get to the shell
- command interpreter
- much like ELIZA, it interprets a line of text after it sees a CR on its input stream of bytes
- it breaks down that text according to a grammar
- the commandline consists of multiple commands that can be combined with logical operators or pipes
- each command consists of a program name and a list of arguments
- arguments can be simple strings/paths, switches/flags or key-value-pairs
- Examples: pwd, cd, ls, cat, less, vim
- environment variables (configuration settings and a way of IPC)
- i/o redirection
- pipes