I'm finding myself helping out some classmates in my computer science class, because I have prior development experience, and I'm having a hard time explaining certain things like the shell. What's a good metaphor for the shell in the context of the Terminal on Mac, contrasted with a remote shell via SSH?
-
7Shell is already a metaphor. "The analogy is with a nut - as in walnut - the important part of which is the kernel inside; the shell is merely the face that the nut presents to the outside world!" – bahamat Feb 09 '12 at 20:02
-
1See also What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'console'? – Gilles 'SO- stop being evil' Feb 09 '12 at 22:34
9 Answers
Hey you speak with the computer!
(Quote from a child who discovers the shell.)
“The shell” is basically a language the computer can recognize, obey to, and reply to if asked.
Local or not makes no difference. Think of a remote shell as an equivalent of communication over the phone.

- 28,907
-
4A friend with no Unix experience but some Internet experience thought the shell was a chat. When I explained he refined the observation to ‘a chat with the computer’, which is strangely accurate in a very limited sense. – Alexios Feb 09 '12 at 21:39
A shell is the interface through which a user interacts with a computer. The Windows GUI itself is a shell. A command line shell requires the user to type commands as opposed to point 'n click.

- 85,964
Put simply, a terminal is an I/O environment for programs to operate in, and a shell is a command processor that allows for the input of commands to cause actions (usually both interactively and non-interactively (scripted)). The shell is run within the terminal as a program.
There is little difference between a local and remote shell, other than that they are local and remote (and a remote shell generally is connected to a pty, although local shells can be too).

- 125,559
- 25
- 270
- 266
shell is an interface for user to interact with operating system by using commands.
I like below statement.
web browsers and email clients that are "shells" for HTML rendering engines
Local shell: Hey, you're talking to the computer face to face...
Remote shell: Let's use the phone line to speak to this computer...

- 113
If you're just looking at the difference between a local and remote shell, how about the Fing-Longer of Futurama fame? It's like having a really long finger to type at a keyboard on another machine.

- 51,350
No need for a metaphor, really:
Local shell - a place where you can type commands to your computer
Remote shell - a place where you can type commands to a remote computer

- 101
A shell is a program launcher.
It can be command line based or GUI based. GUI shells are usually deeply integrated with file managers as it's convenient to start a program by choosing a file first.
Without anything like a shell, there would be no mechanism to tell the computer what programs you want it to run, and it would always run a fixed set of programs from powerup to powerdown. Sometimes this is desirable, i.e. kiosks.

- 10,992
First, they need to understand the concept of interface. Like a terminal, an interface is a communication end point between 2 or more programs.
Unix has revolutionized the concept of communication by unifying the concepts of Inter-Process Communications with networking. Even better: everything is a file.
So a shell is an interface between a user and an operating system which uses a given language to interact. Whether on the same machine or over the network: What You See Is What You Get.
Underlying mechanisms provide a layer on which you can bind a login shell. A shell does not care where it is bound because it is not his jurisdiction. Underlying mechanisms take care of keeping the shell connected and carry on any task you feed it through the shell interface.
Who needs a graphical environment when you got a shell? Inexperienced users of course!