The Shell

The SHELL: A Global Tool for Calling and Chaining Procedures in the System
Louis Pouzin
April 2, 1965

PDF document

I believe the author of this document originated the term “shell” with respect to a computer system.

In this paper, “the System” was what became the Multics operating system. Multics appears to be very different than what we’re used to today. It appears that what we would call a “file system” existed, but it had special files called “segments” that could be readily (maybe automatically) mapped in to memory.

Looks like this is where Unix command ls got its name, an abbreviation for “list segments”.

Familiar ideas

This paper has at least the beginnings of a lot of familiar ideas:

  • Command lines with the program name as the first word of the command line
  • Command line flags
  • I/O redirection, stdin and stdout
  • User selection of shell

Unfamiliar ideas

  • “segment” vs file vs process memory
  • supervisor
  • console
  • totally different idea about “process”

For much of the paper, Pouzin uses the term “segment” as today we would write “file”. There are places where “segment” is a special type of file. After poking around a bit I think Multics memory-mapped “segments” on demand, so there wasn’t a lot of conceptual difference between memory and files.

I’m still at a loss to define what a “supervisor” is. Apparently you could type in commands and the supervisor would execute them. I don’t know how this is different than a shell. Similarly, what is “the console”? Whatever it is, it seems to have had a special place in Multics, or maybe just the GE 636 computer.

Pouzin has programs weaving in and out of his SHELL, which makes me think the SHELL was more like the DCL command interpreter, which lived in every VMS process.

Antique concerns

Pouzin spends a lot of time describing pushing arguments and results on the execution stack, and explaining why you might not want to clean up the stack when a command exits.

Strange lack of concern

Pouzin does not consider shell syntax at all. He does not talk about any flow-of-control constructs like looping, or if-then-else blocks. Looks to me like his conception of the SHELL only involved linear sequences of commands.

Relevance to a Philosophy of Shells

I believe this paper is important in demonstrating that ideas about shells evolved over time. Some features that would show up later in Thompson, Mashey and Bourne shells, and maybe DCL, appear in a 1965 paper, although later shells refined those features. It may also demonstrate that the operating system context is important to shell designs.