Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm curious about the term "shell." I think I know what it is (though the distinction between "shell" and "terminal" is still fuzzy) but why was the word "shell" chosen to describe this type of program?

This might seem unimportant, but usually when the word choices mystifies me, it is pointing to a gap in my understanding.

share|improve this question
A terminal is a device or I/O pipe. A shell is an executable program that interactively in real-time receives user input from a terminal and then does things based on it. "Shells" without provision for direct interactive use are technically scripting interpreters of some kind. – LawrenceC Jun 13 '11 at 20:31
up vote 5 down vote accepted

The Multics glossary may provide a clue. The shell is defined thus:

The Multics command processor used to be called the shell. This program is passed a command line for execution by the listener; it parses the line into a command name and arguments, locates the command and initiates it, and calls the command program with arguments that are PL/I character strings. It is simple to replace the default system supplied shell with a user-provided program, by calling cu_$set_cp (see abbrev). A Unix shell includes the concepts of both shell and listener in the Multics sense.

The relationship between shell and listener makes sense both etymologically and metaphorically [1].

[1] "Since the shell is a symbol of authority, speech, and hearing, which is to say a symbol of prophecy..."

share|improve this answer

Maybe because it is the surface, shielding the inner kernel from the user? So the kernel would be the pearl inside the shell.

share|improve this answer
I've always heard that the shell was a protective layer that shielded the user from the kernel. – Glorytoad Jun 14 '11 at 13:12

From http://en.wikipedia.org/wiki/Thompson_shell#History

"The name "shell" for a command line interpreter and the concept of making the shell a user program outside of the operating system kernel were introduced in Unix's precursor Multics."

Further down the wikipedia rabbit hole finds this: "Louis Pouzin, introduced the term shell for the command language used in Multics"

I have not read it in full, but his writing here may give you the answer: http://www.multicians.org/shell.html

EDIT: indeed it is not explained. He merely "coined" the term. Not the funny story you were hoping for, was it?

share|improve this answer
Unsatisfying, but that's how it goes sometimes. – Eric Wilson Jun 13 '11 at 19:11

The analogy is with a nut: outside is the shell, inside is the kernel.

share|improve this answer

As I understand it, "shell" is an older term for what we now would call "User Interface".

share|improve this answer

Looks like the answer lies here:

Historical note: Apparently, the original Multics shell (sense 1) was so called because it was a shell (sense 3); it ran user programs not by starting up separate processes, but by dynamically linking the programs into its own code, calling them as subroutines, and then dynamically de-linking them on return. The VMS command interpreter still does something very like this.

- Wikipedia

I.e., "shell" was a good real world analogy for how Multics, a predecessor of Unix, ran programs.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.