Was ist der Unterschied zwischen Shell, Konsole und Terminal?


Antworten:


168

In der Linux-Welt können sie alle aus der Sicht des Benutzers an der Tastatur gleich aussehen. Die Unterschiede bestehen darin, wie sie miteinander interagieren.

Die Shell ist das Programm, das tatsächlich Befehle verarbeitet und Ausgaben zurückgibt. Die meisten Shells verwalten auch Vordergrund- und Hintergrundprozesse, den Befehlsverlauf und die Befehlszeilenbearbeitung. Diese (und viele weitere) Funktionen gehören zum Standard bash, der gebräuchlichsten Shell in modernen Linux-Systemen.

Ein Terminal bezieht sich auf ein Wrapper-Programm, das eine Shell ausführt. Vor Jahrzehnten war dies ein physisches Gerät, das nur aus einem Monitor und einer Tastatur bestand. Als Unix- / Linux-Systeme bessere Multiprozessor- und Fenstersysteme hinzufügten, wurde dieses Terminalkonzept in Software abstrahiert. Jetzt haben Sie Programme wie Gnome Terminal, die in einer Gnome-Fensterumgebung ein Fenster öffnen, in dem eine Shell ausgeführt wird, in die Sie Befehle eingeben können.

Die Konsole ist eine besondere Art von Terminal . In der Vergangenheit bestand die Konsole aus einer einzelnen Tastatur und einem einzelnen Monitor, die an einen dedizierten seriellen Konsolenanschluss eines Computers angeschlossen waren, der für die direkte Kommunikation mit dem Betriebssystem auf niedriger Ebene verwendet wurde. Moderne Linux-Systeme bieten virtuelle Konsolen . Auf diese wird über Tastenkombinationen (z. B. Alt+ F1oder Ctrl+ Alt+ F1; die Funktionstastennummern verschiedener Konsolen) zugegriffen, die auf niedrigen Ebenen des Linux-Betriebssystems ausgeführt werden. Dies bedeutet, dass kein spezieller Dienst installiert und konfiguriert werden muss, um ausgeführt zu werden . Die Interaktion mit der Konsole erfolgt ebenfalls über ein Shell- Programm.


1
Bevor Terminals Monitore mit Tastaturen waren, handelte es sich um Teletypen - eine Art elektrische Schreibmaschine. en.wikipedia.org/wiki/Teleprinter
Kevin Panko

13
Konsole bedeutet manchmal "die Tastatur und den Monitor, die physisch an diesen Computer angeschlossen sind". ZB "Ich habe mich über die Konsole angemeldet, weil der Server nicht auf das Netzwerk reagiert hat."
Kevin Panko

1
@Doug Harris: Kannst du ein paar Bilder der Hardware hinzufügen, über die du sprichst?
Krallen

1
Als ich in der Schule in den späten 1980er Jahren war, habe ich eine Menge Arbeit auf DEC VT220 - Terminals - en.wikipedia.org/wiki/VT220 - Das ist ein gutes Beispiel für die physikalische Vorrichtung I beschrieben.
Doug Harris

5
Wenn also Terminals und Konsolen heutzutage jeweils in Software implementiert sind - was ist der Unterschied zwischen den beiden (jetzt)?
Gavin Hope

15

Eine Shell ist ein Programm, das eine Eingabeaufforderung ausgibt und darauf wartet, dass Sie Befehle eingeben. Es führt sie aus und druckt dann eine weitere Eingabeaufforderung. So wie CMD in Windows oder Bash in Unix. Es kann in einem Terminal oder auf der Konsole ausgeführt werden.

Eine Konsole war ursprünglich eine physische Sache, ein Bedienfeld. In Bezug auf Computer bedeutet dies normalerweise die Anzeige, die Sie sehen, bevor die GUI gestartet wird oder nachdem sie beendet ist. Sie können manchmal zur Anzeige anstelle der grafischen Benutzeroberfläche wechseln. Hier druckt das Betriebssystem Fehlermeldungen. Auf einem Computer mit mehreren Benutzern ist dies der Bildschirm, der tatsächlich an den Computer angeschlossen ist. Um Sie zu verwirren: Unter Windows kann dies auch ein Fenster mit einer Befehls-Shell bedeuten, dh ein Terminal.

Ein Terminal war ursprünglich auch Hardware, die zur Kommunikation mit einem Computer verwendet wurde. Heutzutage bezieht es sich normalerweise auf ein Fenster mit einer Befehlszeile (Shell), die möglicherweise in einem GUI-Fenster oder anstelle einer GUI angezeigt wird.


2

Ein Terminal ist eine textbasierte Schnittstelle (möglicherweise zu einer Shell)

Der Unterschied zwischen Konsole und Shell ist einer, den ich noch nicht verstehe, aber ich kann Ihnen sagen, wie sich ein Terminal von einer Shell unterscheidet.

Das Terminal ist ( laut Wikipedia ) "eine serielle Computerschnittstelle zur Texteingabe und -anzeige. Informationen werden als Array vorgewählter gebildeter Zeichen dargestellt".

Sie können ein Terminal für die Interaktion mit einer Shell verwenden, aber Sie können es auch für die Interaktion mit einer textbasierten GUI verwenden , die auch als Terminalbenutzeroberfläche bezeichnet wird . Zum Beispiel:

  • Vim verfügt über GUI-Elemente, einschließlich Zeilennummern und benannten Registerkarten
  • Nano verfügt über GUI-Elemente, einschließlich eines Hilfemenüs mit Befehlen
  • Tmux verfügt über GUI-Elemente, einschließlich einer Statusleiste und Trennlinien zwischen den Fenstern
  • Minicom verfügt über GUI-Elemente, einschließlich Menüs und einer Statusleiste

In jedem Fall werden die GUI-Elemente nicht mit Pixeln, sondern mit Text "gezeichnet".


Ich bin mir nicht sicher, ob diese Definition nur textbasiert ist. In gewisser Weise könnten einige GUIs als Terminals imo angesehen werden.
Jiggunjer

2

Für Anfänger Anfänger

Für eine detailliertere Beschreibung: https://askubuntu.com/a/506628/130518

  • terminal = Umgebung für Texteingabe / -ausgabe
  • Konsole = physisches Terminal
  • Shell = Befehlszeileninterpreter

Ich werde den normalsten Anwendungsfall dafür im folgenden Text beschreiben.

Ein Terminal verwendet eine Shell. Eine Shell kann ohne Terminal ausgeführt werden.

Sich auf Alltagsgegenstände beziehen:

  • Terminal -> TV-Bildschirm in Ihrem Zuhause
  • Shell -> Programm, das auf dem Fernsehbildschirm läuft

Eine andere Sichtweise: Ihre Ohren (Eingabe) und Ihr Mund (Ausgabe) sind die Anschlüsse für den Ton. Ihr Gehirn ist der Interpret dieser Klänge unter Verwendung einer bestimmten Shell (Verarbeitung).

Das Terminal ist für uns Menschen, damit wir in der Shell lesen und schreiben können. Shells können in Hintergrundprozessen ausgeführt werden, die keine menschliche Interaktion erfordern, z. B. Cron-Job, und erfordern daher kein Terminal.

Einige Beispiele für vorhandene Terminals:

  • Eingabeaufforderung
  • guake
  • gnome-terminal
  • terminator

Einige Beispiele für Muscheln, die existieren:

  • Bash
  • sh (Borowski-Schale)
  • PowerShell [Windows]
  • zsh (Z-Schale)

Ich habe nur geschrieben, wie diese beiden normalerweise funktionieren, es gibt andere Möglichkeiten, wie sie funktionieren, aber das ist für fortgeschrittene Benutzer.


1

Denken Sie an einen anderen Kontext, das ist Entwicklung.
Auch wenn Sie nicht über umfassende Entwicklungskenntnisse verfügen, kennen Sie wahrscheinlich die Grundlagen: Sie bearbeiten ein Programm, übergeben es einem Compiler oder einem Interpreter, der eine kompilierte Anwendung erstellt.
Die Konsole ist wie der Editor Ihres Programms. Es hilft Ihnen beim Schreiben , führt aber nichts aus. Wenn Sie fertig sind, senden Sie es an den Compiler.

Sie können Ihren bevorzugten Editor verwenden, vim, gedit, emacs, notepad ++, Netbeans, eclise usw. usw. Am Ende handelt es sich jedoch nur um verschiedene Tools: Wenn Sie dasselbe Programm schreiben, wird die Ausgabe gleich sein.
In dieser Metapher ist die Shell der Compiler. Die Befehle, die in das Terminal eingegeben werden, werden an die Shell gesendet, die sie interpretiert und sofort ausführt.
Während Terminals nur Frontends für die Shell sind, enthält die Shell die eigentliche Sprache, wie dies für den Compiler der Fall ist.

Offensichtlich ist ein Terminal kein Texteditor, vor allem, weil es keine Datei erzeugt, sondern Text an die zugrunde liegende Shell sendet und die Ausgabe von dieser abruft.

Und die Shell ist kein Compiler, sondern interpretiert Ihren Befehl und führt ihn sofort aus, anstatt eine ausführbare Datei zu erstellen.

Trotz dieses großen Unterschieds finde ich diese Metapher sehr hilfreich, um diese Idee zu verstehen.


0

Es gibt wirklich keinen großen Unterschied. Vor langer Zeit, als die "Shell" ein Programm war, war das "Terminal" ein Frontend-Wrapper für dieses Programm, und die "Konsole" war die physische Verbindung zum Computer (Tastatur / Bildschirm).

Es gibt einen Unterschied, abhängig davon, welches Betriebssystem Sie verwenden. Die "Standard" -Shell ist BASH , das normalerweise auf allen Linux / Unix- Versionen verfügbar ist. Windows verwendet eine völlig andere Shell.

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.