Warum wurde das Wort "Shell" verwendet, um eine Befehlszeilenschnittstelle zu beschreiben?


28

Ich bin neugierig auf den Begriff "Shell". Ich denke, ich weiß, was es ist (obwohl die Unterscheidung zwischen "Shell" und "Terminal" immer noch verschwommen ist), aber warum wurde das Wort "Shell" gewählt, um diese Art von Programm zu beschreiben?

Dies mag unwichtig erscheinen, aber wenn mich die Wortwahl verwirrt, deutet dies normalerweise auf eine Lücke in meinem Verständnis hin.


Ein Terminal ist ein Gerät oder eine E / A-Leitung. Eine Shell ist ein ausführbares Programm, das interaktiv in Echtzeit Benutzereingaben von einem Terminal empfängt und darauf aufbaut. "Shells", für die keine direkte interaktive Verwendung vorgesehen ist, sind technische Skript-Interpreten.
LawrenceC

Antworten:


8

Das Multics-Glossar kann einen Hinweis geben. Die Shell ist folgendermaßen definiert:

Der Multics-Befehlsprozessor wurde früher als Shell bezeichnet. Diesem Programm wird eine Befehlszeile zur Ausführung durch den Listener übergeben. Es analysiert die Zeile in einen Befehlsnamen und in Argumente, sucht den Befehl und initiiert ihn und ruft das Befehlsprogramm mit Argumenten auf, die PL / I-Zeichenfolgen sind. Es ist einfach, die vom Standardsystem bereitgestellte Shell durch ein vom Benutzer bereitgestelltes Programm zu ersetzen, indem Sie cu_ $ set_cp aufrufen (siehe Abkürzung). Eine Unix-Shell enthält die Konzepte von Shell und Listener im Sinne von Multics.

Die Beziehung zwischen Hülle und Zuhörer ist sowohl etymologisch als auch metaphorisch sinnvoll [1].

[1] "Da die Muschel ein Symbol für Autorität, Sprache und Gehör ist, das heißt ein Symbol für Prophezeiung ..."



10

Aus http://en.wikipedia.org/wiki/Thompson_shell#History

"Der Name" Shell "für einen Befehlszeileninterpreter und das Konzept, die Shell zu einem Benutzerprogramm außerhalb des Betriebssystemkerns zu machen, wurden in Unix 'Vorläufer Multics eingeführt."

Weiter unten im Wikipedia-Kaninchenbau findet sich Folgendes: "Louis Pouzin hat den Begriff Shell für die in Multics verwendete Befehlssprache eingeführt."

Ich habe es nicht vollständig gelesen, aber sein Schreiben hier kann Ihnen die Antwort geben: http://www.multicians.org/shell.html

EDIT: in der Tat ist es nicht erklärt. Er "prägte" lediglich den Begriff. Nicht die lustige Geschichte, auf die du gehofft hast, oder?


3
Unbefriedigend, aber so geht es manchmal.
Eric Wilson

10

Vielleicht, weil es die Oberfläche ist, die den inneren Kern vor dem Benutzer schützt? Der Kern wäre also die Perle in der Schale.


Ich habe immer gehört, dass die Shell eine Schutzschicht ist, die den Benutzer vor dem Kernel schützt.
Glorytoad

1

Sieht so aus, als ob die Antwort hier liegt:

Historischer Hinweis: Anscheinend wurde die ursprüngliche Multics-Shell (Sinn 1) so genannt, weil es sich um eine Shell handelte (Sinn 3). Es führte Benutzerprogramme nicht aus, indem separate Prozesse gestartet wurden, sondern indem die Programme dynamisch in ihren eigenen Code eingebunden, als Unterroutinen aufgerufen und bei der Rückkehr dynamisch entkoppelt wurden. Der VMS-Befehlsinterpreter macht immer noch so etwas.

- Wikipedia

Das heißt, "shell" war eine gute reale Analogie dafür, wie Multics, ein Vorgänger von Unix, Programme ausführte.


Wikipedia ist jedoch keine Quelle. Wenn Sie es als eine Quelle verwenden, führt dies zu einem Circular Sourcing, bei dem Wikipedia eine Website als Quelle verwendet, die Wikipedia selbst als Quelle verwendet. Im Moment ist dies reine Spekulation.
Evi1M4chine

0

Wie ich es verstehe, ist "Shell" ein älterer Begriff für das, was wir jetzt "Primäre Benutzeroberfläche" nennen würden. Der moderne analoge Begriff wäre "Desktop-Umgebung", da virtuell alle modernen Systeme die Desktop-Metapher verwenden.


1
Es gibt viele Überlappungen, aber das ist nicht genau richtig. Jede Shell ist eine Benutzeroberfläche. Aber nicht jede Benutzeroberfläche ist eine Shell. Eine Shell ist die Hauptbenutzeroberfläche, auf der alles beginnt. Es ist die Hauptbenutzeroberfläche des Betriebssystems.
Evi1M4chine

-2

Der Kernel ist der Kern des Systems, während die Shell ihn umgibt und die Schnittstelle zwischen dem Kernel und dem Benutzer ist.

In jedem UNIX-System und sogar in Linux-Systemen ist die Shell der Ort, an dem Systemadministratoren arbeiten, um ein System zu konfigurieren und zu verwalten.

In der modernen Terminologie wird häufig der Begriff CLI oder Befehlszeilenschnittstelle verwendet, um die Shell-Eingabeaufforderung zu beschreiben. Dies steht im Widerspruch zur GUI oder zur grafischen Benutzeroberfläche. Jeder echte Sysadmin weiß jedoch, dass Sie keine GUI-Tools zum Konfigurieren von UNIX / Linux verwenden und nur direkt an der Shell-Eingabeaufforderung arbeiten sollten.

Dies ist heutzutage noch relevanter, wenn wir hören, wie einige junge Linux-Enthusiasten Dinge sagen wie "Ich benutze Linux, aber ich habe die CLI nicht wirklich gelernt".

Wie das alte Sprichwort sagt: "Wenn Sie es nicht an der Shell-Eingabeaufforderung tun können, können Sie es nicht tun."


Ich habe dafür gestimmt, dass ich die Wahrheit gesagt habe.
Na ja
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.