Take the 2-minute tour ×

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. –  ultrasawblade Jun 13 '11 at 20:31
add comment

6 Answers

up vote 4 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
add comment

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

share|improve this answer
add comment

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

share|improve this answer
add comment

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
add comment

Terminal, or more precisely terminal emulator is a program that allows you to emulate a text based terminal (used to access either a local or a remote machine).

Shell is a program that you see running inside the terminal emulator.

The goal of a terminal emulator is to manage the I/O of the terminal and interpret special text sequence (like ANSI escape sequences used for color output and cursor movement).

The goal of the shell is to interpret the commands entered by the user/script and execute the requested programs. It also provide features like history or job management.

share|improve this answer
That's all fine and dandy, but the question was where the term 'shell' came from, not what it meant. –  draeath Jun 13 '11 at 19:17
useful nonetheless. –  Eric Wilson Jun 13 '11 at 19:22
add comment

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
add comment

Your Answer


