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

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

Ich sehe viele Fragen, die nahe beieinander liegen, aber die Fragen selbst zeigen ein grundlegendes Missverständnis einiger wichtiger Begriffe.

  • Warum sollte ich Windows Terminal über PowerShell verwenden?
  • Ich brauche keine WSL für Bash, ich benutze Cygwin.
  • Kann ich conemu mit PowerShell Core verwenden oder muss ich Windows Terminal verwenden?

Beginnen wir mit einem Glossar und klären zunächst einige Wörter.

Terminal

Das Wort „Terminal“ kommt von „terminate“, was darauf hinweist, dass es das Abschlussende oder „Terminal“-Ende eines Kommunikationsprozesses ist. Sie werden oft „dummes Terminal“ hören, wenn Sie sich auf eine textbasierte Umgebung beziehen, in der der Computer, neben dem Sie sitzen, nur Eingaben entgegennimmt und Text anzeigt, während die eigentliche Arbeit am anderen Ende in einem Mainframe oder großen Computer stattfindet. P>

TTY oder "Fernschreiber" war die erste Art von Terminal. Anstelle eines Bildschirms hätten Sie buchstäblich eine Schreibmaschine vor sich. Wenn Sie darauf tippen, sehen Sie den Text auf einem Blatt Papier UND geben diesen Text in einen Computer ein. Wenn dieser Computer antwortet, sehen Sie, wie die Schreibmaschine automatisch auf demselben Papier tippt.

Wenn wir uns auf ein Terminal im Softwaresinne beziehen, beziehen wir uns auf eine wörtliche Softwareversion eines TTY oder Terminals. Das Windows Terminal ist das. Es ist wirklich gut darin, Textausgaben anzuzeigen. Es kann Eingaben entgegennehmen und weitergeben. Aber das Terminal ist nicht schlau. Es verarbeitet Ihre Eingaben nicht wirklich, es sieht sich Ihre Dateien nicht an oder denkt .

Konsole

Die Leute in der Mitte des 20. Jahrhunderts hatten ein Möbelstück in ihrem Wohnzimmer, das als Konsole oder Konsolenschrank bezeichnet wurde. Eine Konsole im Zusammenhang mit Computern ist eine Konsole oder ein Schrank, in dem ein Bildschirm und eine Tastatur kombiniert sind. Aber es ist effektiv ein Terminal. Technisch gesehen ist die Konsole das Gerät und das Terminal ist jetzt das Softwareprogramm innerhalb der Konsole.

In der Softwarewelt sind ein Terminal und eine Konsole praktisch synonym.

Schale

Eine Shell ist das Programm, an das das Terminal Benutzereingaben sendet. Die Shell generiert eine Ausgabe und leitet sie zur Anzeige an das Terminal zurück. Hier sind einige Beispiele für Shells:

  • bash, Fisch, zsh, ksh, sh, tsch
  • PowerShell, pwsh
  • cmd, yori, 4dos, command.com

Hier ist ein wichtiger Punkt, der jetzt, da Sie diese Terminals haben, mehr Sinn machen sollte - Ihre Wahl der Shell diktiert und sollte nicht Ihre Wahl der Terminalanwendung.

Nebenbei: WSL und WSL2 (das Windows-Subsystem für Linux) sind ein vollständiges lokales Linux (oder viele Linuxe), die unter Windows 10 ausgeführt werden. Sie sind vollständig und echt. WSL2 liefert einen echten Linux-Kernel und läuft unter Windows. Cygwin ist KEIN Linux. Cygwin ist eine große Sammlung von GNU- und Open-Source-Tools, die ähnliche Funktionen wie Linux unter Windows bieten - aber es ist kein Linux. Es ist ein Simulakrum. Es sind GNU-Dienstprogramme, die gegen Win32 kompiliert wurden. Es ist großartig, aber es ist wichtig, dass Sie wissen, was der Unterschied ist. Cygwin lässt Sie möglicherweise Ihre Bash-Shell-Skripte ausführen, aber es führt NICHT Apache, Docker oder andere echte ELF-Binärdateien und Linux-Apps aus.

Ihre Wahl der Windows-Konsolen?

Es gibt eine Reihe von Shells, die mit Windows ausgeliefert werden. Hier sind ein paar, die ich gerade ausführe. Beachten Sie das "Chrom" oder den Rand und den Titel um sie herum? Diese Shells werden alle von einer alten Windows-Konsole namens conhost.exe gehostet, von der Sie noch nie gehört haben. Sie können zur Eingabeaufforderung gehen, Powershell, cmd oder Ubuntu eingeben und eine beliebige Anzahl von Shells wird ausgeführt. Conhost erledigt die Arbeit der Ein- und Ausgabe.

Vergiss jetzt, dass Conhost existiert, weil es scheiße ist – es ist super alt.

Pseudo-Konsole, Pseudo-Terminal, PTY, Pseudo-TTY (ConPTY)

Pseudoterminals sind Terminalemulatoren oder Softwareschnittstellen, die Terminals emulieren. Sie geben vor, Terminals wie die oben genannten zu sein. *Nix-Systeme haben seit langem eine Pseudo-Terminal (PTY)-Infrastruktur und jetzt auch Windows als Pseudo-Konsole (ConPTY).

Die neue ConPTY-Schnittstelle von Windows ist die Zukunft von Konsolen und Terminals unter Windows. Wenn Sie sich für eine (nicht integrierte) Konsolenanwendung eines Drittanbieters für Windows entscheiden, vergewissern Sie sich, dass sie ConPTY unterstützt und dass die Erfahrung besser ist als bei einigen der älteren Konsolen, die Screen Scraping oder andere Hacks verwenden.

Zurück zu Ihrer Auswahl an Windows-Konsolen

Denken Sie daran, dass es viele Shells gibt, die Sie in Windows verwenden können, und viele Konsolen von Drittanbietern, die Sie verwenden können, wenn Sie conhost.exe nicht mögen (und das sollten Sie nicht).

  • Hyper
  • ConEmu
  • cmder
  • Konsole2
  • ConsoleZ
    • Endstation
    • FluentTerminal
    • ZOC
    • MobaXterm
    • Babun (tot)
    • 4NT/jpSoftware (nicht kostenlos)
    • Kitt
    • MinTTY
    • Windows Terminal (kostenlos im Microsoft Store)
    • XTermjs – eine Typescript-Komponente, mit der Sie Terminals in Ihre Apps integrieren können
    • VSCode enthält ein Terminal
    • Visual Studio 2019 Preview enthält ein Terminal

    Alle diese Terminals unterstützen ALLE oben genannten Shells und alle Shells, die ich vermisst habe. Weil eine Shell kein Terminal ist. Wählen Sie die aus, die Sie glücklich macht. Ich verwende PowerShell Core und Ubuntu in WSL2 im Windows Terminal.

    Hoffe, das hilft, die Dinge zu klären.

    Sponsor: Leiden Sie unter einem Mangel an Klarheit in Bezug auf Softwarefehler? Bieten Sie Ihren Kunden mit der Fehlerüberwachung von Raygun.com die Erfahrung, die sie verdienen und erwarten. Lässt sich in wenigen Minuten installieren, probieren Sie es noch heute aus!


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

    2. Unterschied zwischen Login-Shell und Nicht-Login-Shell?

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

    4. Was ist der Unterschied zwischen Sudo Su – und Sudo Su –?

    5. Linux – Was ist der Unterschied zwischen `su -` und `su –login`?

    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 nohup und kaufmännischem Und?

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

    Was ist der Unterschied zwischen unlink und rm?