Was ist der Unterschied zwischen "Shell" und "Terminal"? [Duplikat]

8

Ich bin ziemlich neu in Ubuntu und ich liebe es!

Aber ich verstehe den Unterschied zwischen der Shell und dem Terminal nicht ganz. Kann jemand erklären? Jemand sagte mir, dass ein Terminal nur ein "Werkzeug" zum Anzeigen der Shell ist, ähnlich wie die Verwendung eines Browsers wie Firefox oder Chrome zum "Anzeigen" des Webs.

Ist seine Analogie richtig? Was ist auch die Standard-Shell von Ubuntu? Bash, Tcshell oder etwas anderes?

lächelnder Buddha
quelle
1
Normalerweise können Sie herausfinden, mit welcher Shell Sie arbeiten echo $0.
Greg Hewgill

Antworten:

9

Die Shell ist ein Programm, das Ihre Befehle ( ls, cdusw.) akzeptiert und verarbeitet, indem es integrierte Funktionen (wie cd) ausführt oder externe Programme (wie lsoder gcc) aufruft .

Das Terminal ist das Ding (heutzutage fast immer ein Programm, aber oft ein Stück Hardware in der Bronzezeit), das Ihre Tastenanschläge verwaltet und Ihnen Text anzeigt - sowohl die von Ihnen eingegebenen Bits als auch die Bits der Shell oder eines anderen Programms kehrt zu dir zurück. Wenn das Terminal ein GUI-Programm ist, zeichnet es das schöne grafische Fenster, teilt X mit, welche Schriftart verwendet werden soll, ruft die Routinen zum Zeichnen von Text auf und so weiter. Früher war es vielleicht nur eine schicke elektrische Schreibmaschine mit Fächerpapier.

dmckee --- Ex-Moderator Kätzchen
quelle
9

Das ist überhaupt keine schlechte Analogie. Ein Terminal kann nur als Gerät betrachtet werden, um Informationen anzuzeigen und zu empfangen. Es kann von einem dummen Terminal reichen, das nur druckbare Zeichen interpretiert, bis zu einem Giganten mit vollständiger Cursorpositionierung und Farbfunktionen.

Eine Shell, die häufig (aber nicht immer) in einem Terminal ausgeführt wird, ist eine leistungsstarke Umgebung, um Befehle zu interpretieren und auf sie zu reagieren. Sie können die meisten modernen Shells als vollwertige Programmiersprachen betrachten.

Die Grundidee einer interaktiven Shell besteht darin, diese Befehle vom Benutzer (über das Terminal) zu akzeptieren und darauf zu reagieren, indem entweder eigene Aufgaben ausgeführt oder externe Programme ausgeführt werden. Eine nicht interaktive Shell ist diejenige, die im Allgemeinen vorab geschriebene Skripte ausführt, um Aufgaben auszuführen. Nicht wenige Shell-Skripte werden ohne Terminal ausgeführt, da keine Benutzerinteraktion erforderlich ist.

Die Standard-Shell von Ubuntu ist Bash, obwohl es einfach ist, sie nach Belieben zu ändern.

Excellll
quelle
Ist es wirklich fair, eine Shell als Programmiersprache zu bezeichnen? Es ist wahr, dass eine Shell eine sehr spezifische Syntax für die Verwendung benötigt, aber ich denke nicht, dass dies sie zu einer Programmiersprache macht. Könnten Sie näher darauf eingehen?
Ubiquibacon
5
@typoknig, klar, wenn Sie Dinge wie tun können for i in {1..5}; do echo $i; done, ist es eine Programmiersprache, die sich nicht wirklich von Perl / Python unterscheidet. Sogar cmd.exe ist eine Programmiersprache, wenn auch eine im Vergleich zu bashet al. Wenn es keine Programmiersprache wäre, in was zum Teufel habe ich meine Skripte in den letzten 25 Jahren geschrieben? :-)
6

Das ist richtig. Der Terminalemulator bietet eine grafische Handhabung für die Anzeige eines Fensters, eines Menüs usw. und eine Textausgabe sowie eine Eingabe über Tastatur (und Maus, unter bestimmten Bedingungen) in Befehlszeilenprogramme.

Die Shell bietet eine flexible Befehlszeile für die Eingabe der auszuführenden Befehle sowie Rückmeldungen zu Themen wie dem aktuellen Verzeichnis, dem Superuser-Status usw.

Die aktuelle Standard-Shell für Ubuntu ist bash.

Ignacio Vazquez-Abrams
quelle
2

Die Standard-Shell in Ubuntu ist Bash. Die Shell ist auch ein Programm, mit dem Sie mit dem System interagieren (eine von vielen Möglichkeiten, dies zu tun). Mit Terminal meinen Sie einen "Terminalemulator". Ein Terminalemulator kann, wenn Sie so wollen, als "gefälschter Monitor" betrachtet werden.

Radhesh
quelle
1

Früher, als Computer teurer waren als ein Haus, wurden sie als Mainframes bezeichnet . Das Rechnen war teuer, und dennoch brauchten viele Menschen Zugang. Die Lösung? Terminals !

Dies waren "dumme" Computer, nichts weiter als ein Bildschirm mit einer Tastatur und einem sehr einfachen Computer. Das Terminal hatte eine dauerhafte Verbindung zum Mainframe. Befehle wurden vom Mainframe verarbeitet, der die Ergebnisse an das Terminal zurückgab. Das meiste, was Sie getan haben, war textbasiert, keine Grafiken, keine Maus. Das Terminal musste also nur Text senden, empfangen und auf dem Bildschirm anzeigen.

Wenn Sie Chrome OS verwenden oder einen modernen Browser mit einer permanenten Internetverbindung und jemanden, der alles in der Cloud erledigt, haben Sie mehr oder weniger die gleiche Idee. Ihre Analogie zum Browser ist also in der Tat sehr gut.

Wikipedia sagt, dass eine Shell eine Benutzeroberfläche für einen Computer ist und auch grafisch sein kann. MS Windows ist eine Shell. Die UNIX- oder Linux-Shell ist eine CLI-Befehlszeilenschnittstelle. Auch hier funktioniert Ihre Browser-Analogie mit der Webseite als Schnittstelle zur Website und ihrer Datenbank.

SPRBRN
quelle
0

Die Standard-Shell in Ubuntu ab 6.10 ist Dash: https://wiki.ubuntu.com/DashAsBinSh

Vic
quelle
Für Programme, die aufrufen /bin/sh, ja. Die Standard-Shell für Benutzer ist immer noch Bash.
Ignacio Vazquez-Abrams
Ah - mein schlechtes. Ich verbringe meine Tage in CentOS.
Vic