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

share|improve this question
Shell 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 9 '12 at 20:02
up vote 4 down vote accepted

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

share|improve this answer

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.

share|improve this answer
A 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 9 '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.

share|improve this answer

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

share|improve this answer

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.

share|improve this answer

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

share|improve this answer

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.

share|improve this answer

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!

share|improve this answer

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

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.