Sind Terminal und Shell gleich?

29

Ich weiß, das klingt vielleicht dumm, aber ich wollte nur wissen, ob es wirklich einen Unterschied zwischen den beiden in der Linux-Welt verwendeten Wörtern gibt. Ich weiß, dass die Shell eine Befehlszeilenschnittstelle ist und viele Varianten wie Bash, Korn usw. hat. Und ich weiß auch, dass ein Strg + Alt + T ein Terminal auf Ubuntu startet. Ich möchte nur diese beiden Punkte verbinden.

Bedeutet dies, dass das Terminal das sich öffnende Fenster und die Shell das Programm ist, das dahinter ausgeführt wird, um die im Fenster eingegebenen Befehle zu interpretieren? Oder sind sie gleich, wobei terminal ein allgemeiner Begriff ist, der zur Zusammenfassung der Konzepte von Shell usw. verwendet wird?

Was genau unterscheidet die beiden Wörter?

Vamsi Emani
quelle

Antworten:

30

Der Terminal-Emulator (oft nur Terminal genannt) ist "nur das Fenster", ja. Es wird ein textbasiertes Programm ausgeführt, bei dem es sich standardmäßig um Ihre Anmeldeshell handelt (was in Ubuntu bash ist). Wenn Sie Zeichen in das Fenster eingeben, zeichnet das Terminal diese Zeichen in das Fenster und sendet sie an die Standard-ID der Shell (oder eines anderen Programms). Die Zeichen, die die Shell an stdout und stderr ausgibt, werden an das Terminal gesendet, das diese Zeichen im Fenster zeichnet.

Also ja, die Shell und der Terminal-Emulator sind völlig getrennte Programme und eines kann ohne das andere verwendet werden.

geirha
quelle
2
Wie können Sie Shell ohne Terminal verwenden?
Koray Tugay,
5
@KorayTugay: Wenn Sie ein Shell-Skript von cron oder über einen Desktop-Launcher ausführen (bei dem "In Terminal ausführen" nicht markiert ist), verwenden Sie eine Shell ohne Terminal.
Geirha
8

Ich denke, diese Frage wurde auf der Unix- und Linux-Stackexchange-Site ziemlich gründlich untersucht: Unterschiede zwischen Shell, Konsole und Terminal

Geeb
quelle
3
Könnten Sie vielleicht die wesentlichen Teile des Links zu Ihrer Antwort hinzufügen?
jokerdino
Dies ist keine Antwort, dies ist ein Kommentar.
Koray Tugay,
6

Ja, der Terminalemulator und die Shell sind zwei verschiedene Programme. Wie Sie wissen, besteht ein Beispiel für den Unterschied darin, dass beim Starten eines Terminalfensters je nach Konfiguration unterschiedliche Shells ausgeführt werden können (bash, tcsh, ksh, ash und sogar Python!).

Ein weiterer Unterschied besteht darin, dass es mehr Terminal-Emulatoren als nur die Standard-Emulatoren gibt: Gnome-Terminal, verschiedene xterm-Varianten, Konsole (für KDE) usw. (siehe: http://www.howtogeek.com/howto/ubuntu/set- der-default-terminal-emulator-auf-ubuntu-linux / ). Jede Shell kann in jedem dieser Terminalemulatoren ohne große Schwierigkeiten ausgeführt werden.

Ein dritter Unterschied besteht darin, dass Sie neben der Ausführung von Shell-Befehlen auch bestimmte interaktive Anwendungen in Ihrem Terminal-Emulator starten können, die im selben Fenster ausgeführt werden (und sich weiterhin auf dasselbe Terminal-Emulator-Programm verlassen, um die eigentlichen Grafiken zu verarbeiten), z der VIM-Texteditor, das Nethack-Rollenspiel und andere. Wenn Sie möchten, können Sie in Ihrem Terminal-Emulator ein Profil einrichten, mit dem Nethack beispielsweise automatisch gestartet wird, wenn Sie eine neue Registerkarte öffnen. keine Shell beteiligt, aber der Terminal-Emulator ist immer noch das gleiche Programm.

Ein vierter Unterschied besteht darin, dass Sie Remote-Anmeldungen mit einem Programm wie ssh in einem Terminalfenster ausführen können. In diesem Fall wird Ihre Shell (oder ein anderes Programm, das Sie remote ausführen) auf einem anderen Computer ausgeführt, und das ssh-Programm verbindet sie mit dem lokalen Terminalemulator-Programm, das auf Ihrem Computer ausgeführt wird und Grafiken verarbeitet.

Jonathan Cast
quelle