36

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.

Eric Wilson
  • 4,722

8 Answers8

27

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

12

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

user unknown
  • 10,482
9

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?

draeath
  • 558
  • 1
  • 3
  • 10
  • 3
    Unsatisfying, but that's how it goes sometimes. – Eric Wilson Jun 13 '11 at 19:11
  • Actually if you go on to read the referred to design papers you'll find explanation as to why it was called a "shell" program: http://people.csail.mit.edu/saltzer/Multics/Multics-Documents/MDN/MDN-4.pdf – Greg A. Woods Feb 04 '21 at 20:44
8

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..."

jasonwryan
  • 73,126
1

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.

Alex W
  • 111
  • Wikipedia is not a source though. Using it as one, leads to circular sourcing, where Wikipedia uses a site as its source, that itself used Wikipedia as a source. As it stands, this is pure speculation. –  Dec 25 '16 at 08:16
0

As I understand it, "shell" is an older term for what we now would call "Primary User Interface". The modern analogous term would be "Desktop Environment", since virtualy all modern systems use the desktop metaphor.

Teddy
  • 1,555
  • 10
  • 13
  • 1
    There’s a lot of overlap, but that is not exactly correct. Every shell is a user interface. But not every user interface is a shell. A shell is the main user interface, around everything and from which everything starts. It is the operating system’s main user interface. –  Dec 25 '16 at 08:18
-2

The kernel is the core of the system, whilst the shell surrounds it and is the interface between the kernel and the user.

Within any UNIX system, and even with Linux systems, the shell is the place that systems administrators work to configure and manage a system.

Modern terminology often uses the term CLI or command line interface to describe the shell prompt. This is in deference to the GUI or graphical user interface. However any real Sysadmin knows that you should not use GUI tools to configure a UNIX/Linux and work only directly at the shell command prompt.

This is even more relevant nowadays when we hear some junior Linux enthusiasts say things such as "I use linux, but I've not really learnt the CLI".

As the old adage goes "If you can't do it at the shell prompt, you can't do it."

-2

It's called a SHELL as it hides the kernel. like the bullet shell casing. It protects the kernel.

ajay4q
  • 103