it-swarm.com.de

Was ist der Unterschied zwischen Shell, Konsole und Terminal?

Ich bin mit der Terminologie verwechselt. Was ist der Unterschied zwischen Shell, Konsole und Terminal?

181
claws

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 sind Standard in bash, der in modernen Linux-Systemen am häufigsten verwendeten Shell.

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 spezielle 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 kann über Tastenkombinationen zugegriffen werden (z. Alt+F1 oder Ctrl+Alt+F1; Die Funktionstaste nummeriert verschiedene Konsolen), die auf niedrigen Ebenen des Linux-Betriebssystems gehandhabt werden. Dies bedeutet, dass kein spezieller Dienst installiert und konfiguriert werden muss, um ausgeführt zu werden. Die Interaktion mit der Konsole erfolgt ebenfalls mit einem Shell-Programm .

161
Doug Harris

Eine Shell ist ein Programm, das eine Eingabeaufforderung anzeigt 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 die Datenverarbeitung 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 bedeuten, in dem sich eine Befehls-Shell befindet, d. H. 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.

14
Peter Westlake

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 dir beim schreiben aber es führt nichts wirklich aus: wenn du fertig bist, schickst du es dem Compiler dafür.

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, ist die Ausgabe dieselbe.
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.

1
AgostinoX

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. cron job und benötigen daher kein terminal.

Einige Beispiele für vorhandene Terminals:

  • Eingabeaufforderung
  • guake
  • gnome-terminal
  • terminator

Einige Beispiele für Muscheln, die existieren:

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

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
Karl Morrison

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 verwenden, um mit einer Shell zu interagieren, aber Sie können es auch verwenden, um mit einer textbasierten Benutzeroberfläche , manchmal auch als Terminalbenutzeroberfläche bezeichnet, zu interagieren. Zum Beispiel:

  • Vim hat GUI-Elemente einschließlich Zeilennummern und benannten Registerkarten
  • Nano hat GUI-Elemente einschließlich eines Hilfemenüs von Befehlen
  • Tmux enthält GUI-Elemente, einschließlich einer Statusleiste und Trennlinien zwischen den Fenstern
  • Minicom hat GUI-Elemente einschließlich Menüs und eine Statusleiste

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

0
Nathan Long

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 , die normalerweise auf allen Linux/Unix-Versionen verfügbar ist. Windows verwendet eine völlig andere Shell.

0
Josh K