Edit: In the linked duplicate question, it's answered that shell = command line interepreter. Tanenbaum says it's not so. Hence the linked question doesn't solve my problem: why does Tanenbaum say so and what kind of "shell" does he imply?

Reading Andrew S. Tanenbaum's "modern Operating Systems", 3rd ed., on page 10, under 1.2.2, I see the following:

These primitive control cards were the forerunners of the modern shells and command-line interpreters.

I've been using Linux daily for years, and am familiar with the concept of a command line interpreter, i.e. Bash, Sh, Tcsh, Zsh, Csh. Now, I've always been sure that "shell" equals "Bash" equals "command line interpreter". Also, I understand that the commands I enter are ran and the results returned to me by a concrete executable, that belongs to the list above. However, Tanenbaum lists these as separate categories.

Thus, the question: what exactly is a "shell", how is it different from a "command line interpreter", or maybe it's only in the context of the book that these two concepts differ? Maybe it's the GUI shell that's being mentioned here?

closed as primarily opinion-based by Archemar, heemayl, Jeff Schaller, ilkkachu, Thomas Dickey Aug 7 '16 at 14:24

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
  • 1
    That question has an answer saying that shell equals CLI, whereas Tanenbaum claims they're not, hence that answer doesn't entirely clear up my confusion. – iksemyonov Aug 7 '16 at 12:15
  • Are you asking for our opinion of his opinion? It might be simpler to ask him directly – Jeff Schaller Aug 7 '16 at 13:00
  • @JeffSchaller Never really thought about it, what if everyone goes spamming him with simple questions? Or am I overthinking? Also, I assumed when asking the question that there may be a meaning to the terms which people more educated than me are aware of. – iksemyonov Aug 7 '16 at 13:03
  • The quote here doesn't seem (to me) to explicitly state there would be a significant difference between shells and command-line interpreters. From that sentence only, it just looks like Tanenbaum chose to mention both names for the same thing, perhaps just to be explicit. Or to account for GUI stuff, if one cares to call them shells, too. Does the book say anything about the difference elsewhere? If it did, that would be important. – ilkkachu Aug 7 '16 at 13:30

This is quite broad.

Shell was interface between user and unix kernel.

In the old days, shell would be similar to CLI, that is sh,csh,tcsh were CLI.

Nowdays with Graphic User Interface (children of X-window, apple's finder, amiga's workbench) you can run your host without knoning about ls, hence in a way GUIs can also be called "shell".

However bash and friend are in CLI and shell familly, whereas Gnome, KDE and all are in GUI familly.


I also do not see that Tanenbaum claimed anything like that. For example, different version at http://odi-tele.com/mirrors/tanenbaum/tanenbaum/Operating-System-Extended-Machine.html has this text instead:

These primitive control cards were the forerunners of modern job control languages and command interpreters.

But I do not know if that is rev.4 (guess) or some older, but it looks like it seemed confusing, and so was changed.

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