Le terminal et le shell sont-ils les mêmes?

29

Je sais que cela peut sembler stupide, mais je voulais juste savoir s'il y avait vraiment une différence entre les deux mots utilisés dans le monde Linux. Je sais que le Shell est une interface de ligne de commande et possède de nombreuses variantes comme Bash, Korn, etc. Et je sais également qu'un Ctrl + Alt + T lance un terminal sur Ubuntu. Je veux juste connecter ces deux points.

Cela signifie-t-il que le terminal est la fenêtre qui s'ouvre et que le shell est le programme qui s'exécute derrière pour interpréter les commandes tapées dans la fenêtre? Ou sont-ils les mêmes dans lesquels terminal est un terme générique utilisé pour résumer les concepts de Shell, etc.?

Qu'est-ce qui différencie exactement les deux mots?

Vamsi Emani
la source

Réponses:

30

L'émulateur de terminal (souvent appelé simplement terminal) n'est "que la fenêtre", oui. Il exécute un programme basé sur du texte, qui est par défaut votre shell de connexion (qui est bash dans Ubuntu). Lorsque vous tapez des caractères dans la fenêtre, le terminal dessine ces caractères dans la fenêtre en plus de les envoyer au stdin du shell (ou d'un autre programme). Les caractères que le shell envoie à stdout et stderr sont envoyés au terminal, qui à son tour dessine ces caractères dans la fenêtre.

Donc oui, le shell et l'émulateur de terminal sont des programmes complètement séparés, et l'un ou l'autre peut être utilisé sans l'autre.

geirha
la source
2
Comment utiliser shell sans terminal?
Koray Tugay du
5
@KorayTugay, lorsque vous exécutez un script shell à partir de cron ou via un lanceur de bureau (où vous n'avez pas coché "exécuter dans le terminal"), vous utilisez un shell sans terminal.
geirha
8

Je pense que cette question a été explorée de manière assez approfondie sur le site stackexchange Unix et Linux: Différences entre shell, console et terminal

Geeb
la source
3
Peut-être pourriez-vous ajouter les parties essentielles du lien dans votre réponse?
jokerdino
Ce n'est pas une réponse, c'est un commentaire.
Koray Tugay du
6

Oui, l'émulateur de terminal et le shell sont deux programmes différents. Comme vous le savez, un exemple de la différence est que le lancement d'une fenêtre de terminal peut exécuter différents shells en fonction de ce que vous avez configuré (bash, tcsh, ksh, ash, même python!).

Une autre différence est qu'il y a plus d'émulateurs de terminaux que les seuls par défaut: gnome-terminal, plusieurs variétés de xterm, konsole (pour KDE), etc. (voir: http://www.howtogeek.com/howto/ubuntu/set- l'émulateur de terminal par défaut sur ubuntu-linux / ). Tout shell peut être exécuté dans n'importe lequel de ces émulateurs de terminaux, sans trop de difficulté.

Une troisième différence est que, en plus d'exécuter des commandes shell, vous pouvez également démarrer certaines applications interactives dans votre émulateur de terminal, et elles s'exécuteront dans la même fenêtre (et en s'appuyant toujours sur le même programme d'émulateur de terminal pour gérer les graphiques réels), telles que l'éditeur de texte vim, le RPG nethack et autres. Si vous le souhaitez, vous pouvez configurer un profil dans votre émulateur de terminal pour démarrer nethack, disons, automatiquement lorsque vous ouvrez un nouvel onglet; aucun shell impliqué, mais l'émulateur de terminal est toujours le même programme.

Une quatrième différence est que vous pouvez effectuer des connexions à distance, à l'aide d'un programme comme ssh, depuis l'intérieur d'une fenêtre de terminal. Dans ce cas, votre shell (ou tout autre programme que vous exécutez à distance) s'exécute sur un autre ordinateur et le programme ssh le connecte au programme d'émulateur de terminal local exécuté sur votre machine qui gère les graphiques.

Jonathan Cast
la source