Warum brauchen wir so viele Terminalemulator-Pakete und wozu dienen sie?


8

Das ist etwas, das mich schon lange so verwirrt hat.
Ich benutze Linux, habe aber Lücken in meinem Verständnis bestimmter Aspekte und eines betrifft das Terminal.
Wie ich verstanden habe, ist das, was wir mit der Konsole meinen, ein Emulator alter Terminals.
Aber ich kann nicht verstehen, worum es geht.
Beim Lesen waren die besten alten Terminals die VT-Serie und der Vektorgrafiktyp (Tektronix).
Ich gehe also davon aus, dass die aktuellen Emulatoren diese emulieren.
Jetzt sind meine Anforderungen an Linux in Bezug auf die Anzeige von Anzeigen so weit gegangen, dass ich ein Farbschema für vim verwende und Farben schätze, wenn ich in Dateien verschiedene Dateien mache.
Aber wenn ich Probleme habe, finde ich normalerweise Ratschläge zum Einstellen xterm-256oder screen-256etc.
Zusätzlich, wenn ich dies tue:ls /lib/terminfo/ Ich sehe ungefähr ein Dutzend Verzeichnisse mit Konfiguration für (ich nehme an) verschiedene Arten von Emulatortypen.

Meine Frage ist also, wie passen diese xterm-256oder screen-256die anderen in die Idee, in den letzten Jahrzehnten nur die Top-Terminals zu emulieren?
Was ist die Notwendigkeit, so viele Terminaltypen zu haben? Sollte ich mir mehr damit befassen?
Und warum muss man heute mit der modernen Technologie diese alten Terminals wie VT emulieren und nichts Neues haben?

Vielleicht sind meine Bedürfnisse zu einfach, um die Feinheiten zu schätzen, aber es war etwas, das mich sehr verwirrt hat. Da ich zum Beispiel ein Problem mit einem Farbschema habe, kopiere ich einfach das, was ich in Google über TERM usw. finde, ohne wirklich zu verstehen, was ich tue oder was das Problem ist.

Wenn mir jemand hilft, dies zu verstehen, wäre ich sehr dankbar


2
Tangentiale Bemerkung: Das Setzen Ihres $ TERM ist ausnahmslos ein schlechter Rat (es sei denn, es ist in screenoder tmux) ...
Jasonwryan

@ Jasonwryan: In allen Anzeigeproblemen erwähnen alle Beiträge den Wechsel des TERM zu diesem oder jenem und dies macht meine Verwirrung noch schlimmer
Jim

Lassen Sie die terminfo db ihre Arbeit machen; Problemumgehungen wie das Festlegen eines Termwerts in .bashrcmaskieren bestenfalls ein zugrunde liegendes Problem und verursachen wahrscheinlich nur weitere Probleme.
Jasonwryan

Die Idee ist nicht, nur Top-Terminals der letzten Jahrzehnte zu unterstützen, sondern so ziemlich jedes Terminal, das es geben könnte. Die Terminfos werden nicht ausschließlich für die Verwendung auf Linux-Systemen erstellt, haben jedoch eine längere Historie.
Sami Laine

@SamiLaine: to support pretty much any terminal there might be..Aber warum? Warum sollten wir ein Terminal aus den 70ern oder 80ern ohne Grafik oder Greenscreen emulieren wollen?
Jim

Antworten:


9

Seltsame Aspekte von Unix gibt es normalerweise aus gutem Grund, also suchen Sie zu Recht nach einem. In diesem Fall ist der gute Grund jedoch längst überholt, und Sie betrachten ein antikes Artefakt einer vergangenen Ära.

Fast das einzige "Terminal", das heute existiert, ist xterm & Varianten. Ihre Fähigkeiten variieren geringfügig in einer Weise, die nur für wenige Programme von Bedeutung ist. Wenn Sie nur xterm verwenden und niemals die Variable TERM berühren oder einen Blick auf die terminfo-Datenbank werfen, ist Ihr Leben im Allgemeinen besser.

Die Variable TERM kommuniziert Informationen über das Endgerät zu der Anwendung über die Umgebung, vgl Mann xterm . Durch Ändern wird das Terminal nicht geändert . Es stellt lediglich eine andere Terminalfunktionalität für die Anwendung dar.

In den Tagen festverdrahteter Terminals war es notwendig, TERM so einzustellen, dass es das angeschlossene Terminal darstellt. Bei xterm kann die Software die Variable selbst einstellen. Eine kurze Tour durch die vim-Dokumente zeigt (wie Sie in Ihrem Kommentar erwähnen), dass Sie sie ändern müssen, um die Farbe zu unterstützen. Das ist ein Fortschritt für dich.

warum heute ... diese alten Terminals wie VT emulieren und nichts Neues haben?

Die Antwort ist sowohl anthropologisch als auch technisch.

Vor der GUI erfolgte der Zugriff auf Unix-Computer über dumme Terminals, z. B. VT-100. Shells und Utilities wie Top gab es bereits. Als die GUI in den 1980er Jahren technologisch praktisch wurde (wobei X eine Rolle spielte), mussten Unix-Benutzer diese Programme noch verwenden, sodass xterm erfunden wurde, um das alte VT-100 zu emulieren.

Es war als Notlösung gedacht. "Jeder wusste", dass Terminals die Vergangenheit und GUIs die Zukunft waren, und jeder erwartete, dass auf "alles" über die GUI zugegriffen werden kann. Der ursprüngliche Macintosh hatte zum Beispiel keine Pfeiltasten, denn warum sollten Sie sie brauchen ? Sicherlich die kryptische Unix-Kommandozeile mit ihren fehlenden Vokalen und ihrer hilflosen Hilfe

$ help
help: not found

würde bald den Weg des Trommelspeichers und der Lochkarten gehen. Und das geschah in gewisser Weise: 9 von 10 Benutzern unter Windows oder OS X sehen die Befehlszeile nur, wenn der technische Support vorbeikommt, um etwas zu beheben.

Dann passierten zwei Dinge mit der Unix-GUI, wie es war. Insbesondere Windows hat das Geld vom Markt abgezogen. Es gab einen großen Schritt zur Standardisierung (vgl. Sun News und OSF Motif), und dann kam es um 1990 zum Stillstand. Ungefähr zu dieser Zeit startete das Internet, und die grafischen Dinge in Unix wurden in den Webbrowser verschoben. Die Motivation und das Geld (so ziemlich das Gleiche), eine vollständige GUI für Unix zu entwickeln und alles in Abschnitt 8 des Handbuchs überflüssig zu machen, verschwanden.

Es gibt noch einen weiteren Grund, den nur wenige vorausgesehen haben: Die Befehlszeile hat bestimmte Vorteile gegenüber der GUI. Pipelines und reguläre Ausdrücke sind bemerkenswert leistungsfähig, ganz zu schweigen von der Wiederholbarkeit mit Shell-Verlauf und Skripten. Auch im Kontext einer GUI blieb die Befehlszeile nützlich . So sehr, dass es auch heute noch verbessert wird.

Wie aus Ihrer Frage hervorgeht, ist eine erneute Überprüfung der Annahme, dass die grafische Benutzeroberfläche triumphieren würde, und eine Neuerfindung des Terminals als integraler Bestandteil erforderlich. Wir brauchen ein neues Terminal mit proportionalen Schriftarten und bitadressierbaren Grafiken im Terminal .

Leider scheint niemand dazu bereit zu sein. Kein Unternehmen wird dies übernehmen. Der Markt ist riesig, aber immer noch nur ein winziger Teil der Computerbenutzer. Der logische Geldgeber wäre eine Regierungsbehörde wie DARPA, aber Human-Interface-Forschung gilt heutzutage als "erledigt" (haben wir die GUI nicht bereits erfunden?). Bis mehr Menschen - viel mehr Menschen - die Notwendigkeit erkennen, ist xterm Ihr Freund und wahrscheinlich auch der Freund Ihres Enkels.


"Jeder wusste", dass Terminals die Vergangenheit und GUIs die Zukunft waren, und jeder erwartete, dass auf "alles" über die GUI zugegriffen werden kann. " Zitieren erforderlich.
Faheem Mitha

+ 1. Schöne Antwort. Sie beachten: 1) If you just use xterm, and never touch the TERM...Wie ist das möglich? Jedes Farbschema für vim erfordert eine solche Konfiguration. Noch mehr, wenn es in einem Multiplexer verwendet wird. Ich bin mir also nicht sicher, wie ich ausreichend ausgebildet werden kann, um die für jedes Problem erforderlichen Konfigurationsänderungen zu verstehen. 2) ... today is xterm & variantsWas ist mit screen-*? Ist es Teil der Varianten? Was genau muss ein Benutzer wissen? 3) Wenn ich richtig verstehe, fanden sie es einfacher, über Emulatoren alle Terminals zu unterstützen, die jemals existierten, als etwas von Grund auf neu zu bauen? ->
Jim

Das ist (nicht etwas Neues schaffen und alle bestehenden Terminals jemals unterstützen) sehr seltsam für mich
Jim

Danke für das Update. Eine letzte Frage: Sie erwähnen: The TERM variable communicates information about the terminal...Changing it doesn't change the terminal;Ich verstehe diesen Punkt nicht wirklich. Ich meine, wenn TERMdas Terminal nicht geändert wird, was macht dann das Terminal aus und woher weiß Linux, welche Terminfo-Datenbank zu verwenden ist?
Jim

Der Inhalt der TERMVariablen wird tatsächlich als Index für die terminfo-Datenbank verwendet. Wenn Sie es ändern, ändern Sie den Wert einer Umgebungsvariablen im Shell-Prozess, den xterm hostet . Diese Shell befindet sich möglicherweise auf einer anderen Maschine : xterm -e 'ssh _machine_name_'. Es ist kein Wert, den xterm sieht, und hat folglich keinen Einfluss auf das Verhalten von xterm. Es ist verwirrend , weil xterm setzt die Variable TERM (als einen Gefallen zu Ihnen) reflektierend seiner Konfiguration (Versuch xterm -t), während zur gleichen Zeit vim erfordert , dass Sie es selbst einstellen.
James K. Lowden
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.