"The primary problem was to design the shell be a fully
programmable scripting language that could also serve as the
interface to users typing commands interactively at a terminal.
"First of all, it needed to be compatible with the existing
usage that people were familiar with. There were two usage modes.
One was scripting and even though it was very limited there were
already many scripts people had written. Also, the shell or command
interpreter reads and executes the commands you type at the
terminal. And so it is constrained to be both a command line
interpreter and a scripting language. As the Unix command line
interpreter, for example, you wouldn't want to be typing commands
and have all the strings quoted like you would in C, because most
things you type are simply uninterpreted strings. You don't want to
type ls directory and have the directory name in string quotes
because that would be such a royal pain. Also, spaces are used to
separate arguments to commands. The basic design is driven from
there and that determines how you represent strings in the
language, which is as un-interpreted text."