30

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.

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

| improve this answer | |
20

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

| improve this answer | |
10

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?

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

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

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

| improve this answer | |
  • 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. – Evi1M4chine Dec 25 '16 at 8: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.

| improve this answer | |
  • 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. – Evi1M4chine Dec 25 '16 at 8: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."

| improve this answer | |
  • I got a vote down for telling the truth. ah well... – Colinux May 30 '18 at 15:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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