GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der genaue Unterschied zwischen einem „Terminal“, einer „Shell“, einem „tty“ und einer „Konsole“?

Ich denke, diese Begriffe beziehen sich fast auf dasselbe, wenn sie locker verwendet werden:

  • Terminal
  • Schale
  • tt
  • Konsole

Worauf genau beziehen sich diese Begriffe?

Akzeptierte Antwort:

Ein Terminal ist das Ende eines elektrischen Kabels, ein Panzer ist das Zuhause einer Schildkröte, tty ist eine seltsame Abkürzung und eine Konsole ist eine Art Schrank.

Jedenfalls etymologisch gesehen.

In der Unix-Terminologie lautet die kurze Antwort:

  • terminal =tty =Umgebung für Texteingabe/-ausgabe
  • Konsole =physisches Terminal
  • shell =Kommandozeileninterpreter

Konsole, Terminal und tty sind eng miteinander verwandt. Ursprünglich bedeuteten sie ein Gerät, über das Sie mit einem Computer interagieren konnten:In den frühen Tagen von Unix bedeutete dies ein Gerät im Fernschreiber-Stil, das einer Schreibmaschine ähnelte, manchmal auch Fernschreiber oder „tty“ in Kurzform genannt. Der Name „Terminal“ stammt aus elektronischer Sicht, der Name „Konsole“ aus Möbelsicht. Sehr früh in der Unix-Geschichte wurden elektronische Tastaturen und Displays zur Norm für Terminals.

In der Unix-Terminologie ein tty ist eine bestimmte Art von Gerätedatei, die eine Reihe zusätzlicher Befehle (ioctls) über das Lesen und Schreiben hinaus implementiert. In seiner gebräuchlichsten Bedeutung Terminal ist gleichbedeutend mit tty. Einige ttys werden vom Kernel im Namen eines Hardwaregeräts bereitgestellt, zum Beispiel mit der Eingabe von der Tastatur und der Ausgabe auf einem Bildschirm im Textmodus oder mit der Eingabe und Ausgabe, die über eine serielle Leitung übertragen wird. Andere ttys, manchmal auch Pseudo-ttys genannt , werden (über eine dünne Kernel-Schicht) von Programmen namens Terminal-Emulatoren bereitgestellt , wie Xterm (das im X Window System läuft), Screen (das eine Isolationsschicht zwischen einem Programm und einem anderen Terminal bereitstellt), Ssh (das ein Terminal auf einer Maschine mit Programmen auf einer anderen Maschine verbindet), Expect (für die Skripterstellung von terminal Interaktionen) usw.

Das Wort Terminal kann auch eine traditionellere Bedeutung eines Geräts haben, über das man mit einem Computer interagiert, typischerweise mit einer Tastatur und einem Display. Beispielsweise ist ein X-Terminal eine Art Thin Client, ein Spezialcomputer, dessen einziger Zweck darin besteht, eine Tastatur, ein Display, eine Maus und gelegentlich andere Peripheriegeräte für die menschliche Interaktion anzusteuern, wobei die eigentlichen Anwendungen auf einem anderen, leistungsfähigeren Computer ausgeführt werden. P>

Eine Konsole ist im Allgemeinen ein Terminal im physikalischen Sinne, das per Definition das primäre Terminal ist, das direkt mit einer Maschine verbunden ist. Die Konsole erscheint dem Betriebssystem als (im Kernel implementiertes) tty. Auf einigen Systemen, wie Linux und FreeBSD, erscheint die Konsole als mehrere ttys (spezielle Tastenkombinationen wechseln zwischen diesen ttys); Nur um die Dinge zu verwirren, der Name, der jedem einzelnen tty gegeben wird, kann „Konsole“, „virtuelle Konsole“, „virtuelles Terminal“ und andere Variationen sein.

Eine Hülle ist die primäre Schnittstelle, die Benutzer sehen, wenn sie sich anmelden, deren Hauptzweck darin besteht, andere Programme zu starten. (Ich weiß nicht, ob die ursprüngliche Metapher darin besteht, dass die Shell die Heimatumgebung für den Benutzer ist oder dass die Shell das ist, in der andere Programme ausgeführt werden.)

Verwandte:Centos – Wie installiere ich Desktop-Umgebungen auf CentOS 7?

In Unix-Kreisen shell hat sich darauf spezialisiert, eine Befehlszeilen-Shell zu bezeichnen, bei der es darum geht, den Namen der Anwendung einzugeben, die man starten möchte, gefolgt von den Namen von Dateien oder anderen Objekten, auf die die Anwendung reagieren soll, und die Eingabetaste zu drücken. Andere Arten von Umgebungen verwenden das Wort „Shell“ nicht; Beispielsweise beinhalten Fenstersysteme „Fenstermanager“ und „Desktopumgebungen“, keine „Shell“.

Es gibt viele verschiedene Unix-Shells.
Beliebte Shells für den interaktiven Gebrauch sind Bash (die Standardeinstellung bei den meisten Linux-Installationen), zsh (die Leistung und Anpassbarkeit betont) und fish (die Einfachheit betont).

Befehlszeilen-Shells enthalten Flusssteuerungskonstrukte zum Kombinieren von Befehlen. Benutzer können nicht nur Befehle an einer interaktiven Eingabeaufforderung eingeben, sondern auch Skripts schreiben. Die gebräuchlichsten Shells haben eine gemeinsame Syntax, die auf der Bourne_shell basiert. Bei der Diskussion über „Shell-Programmierung “, wird die Shell fast immer als Shell im Bourne-Stil angesehen. Zu einigen Shells, die häufig für Skripterstellung verwendet werden, denen jedoch erweiterte interaktive Funktionen fehlen, gehören die Korn-Shell (ksh) und viele Ash-Varianten. So ziemlich jedes Unix-ähnliche System hat eine Shell im Bourne-Stil als /bin/sh installiert , normalerweise ash, ksh oder bash.

In der Unix-Systemverwaltung die Shell eines Benutzers ist das Programm, das aufgerufen wird, wenn sie sich anmelden. Normale Benutzerkonten haben eine Befehlszeilen-Shell, aber Benutzer mit eingeschränktem Zugriff haben möglicherweise eine eingeschränkte Shell oder einen anderen spezifischen Befehl (z. B. für Konten, die nur Dateien übertragen).

Die Arbeitsteilung zwischen Terminal und Rohbau ist nicht ganz offensichtlich. Hier sind ihre Hauptaufgaben.

  • Eingabe:Das Terminal wandelt Tasten in Steuersequenzen um (z.B. Linkse[D ). Die Shell wandelt Steuersequenzen in Befehle um (z.B. e[Dbackward-char ).
  • Zeilenbearbeitung, Eingabehistorie und Vervollständigung werden von der Shell bereitgestellt.
    • Das Terminal kann stattdessen seine eigene Zeilenbearbeitung, Historie und Vervollständigung bereitstellen und nur dann eine Zeile an die Shell senden, wenn sie zur Ausführung bereit ist. Das einzige gemeinsame Terminal, das auf diese Weise funktioniert, ist M-x shell in Emacs.
  • Ausgabe:Die Shell gibt Anweisungen wie „display foo aus “, „Vordergrundfarbe auf Grün schalten“, „Cursor in die nächste Zeile bewegen“ usw. Das Terminal führt diese Anweisungen aus.
  • Die Eingabeaufforderung ist ein reines Shell-Konzept.
  • Die Shell sieht nie die Ausgabe der Befehle, die sie ausführt (es sei denn, sie werden umgeleitet). Die Ausgabehistorie (Scrollback) ist ein reines Terminalkonzept.
  • Kopieren und Einfügen zwischen Anwendungen wird vom Terminal bereitgestellt (normalerweise mit der Maus oder Tastenfolgen wie Strg +Shift +V oder Shift +Einfügen ). Die Shell kann auch ihren eigenen internen Copy-Paste-Mechanismus haben (z. B. Meta +W und Strg +J ).
  • Die Jobsteuerung (Starten von Programmen im Hintergrund und deren Verwaltung) wird hauptsächlich von der Shell durchgeführt. Es ist jedoch das Terminal, das Tastenkombinationen wie Strg verarbeitet +C um den Vordergrundjob zu beenden und Strg +Z auszusetzen.

Linux
  1. Unterschied zwischen Login-Shell und Nicht-Login-Shell?

  2. Der Unterschied zwischen einem eingebauten Befehl und einem, der es nicht ist?

  3. Der Unterschied zwischen den Anführungszeichen „…“, „…“, $“…“ und „$“…“ in der Shell?

  4. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  5. Der Unterschied in der Verwendung zwischen Shell-Variablen und Umgebungsvariablen?

Was ist der Unterschied zwischen InnoDB und MyISAM?

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Login- und Non-Login-Shell

Was ist der Unterschied zwischen einer Konsole, einem Terminal und einer Shell?

Unterschied zwischen '{}' und {} im Find-Befehl?

Unterschied zwischen Befehlen im Bash-Skript und Befehlen im Terminal