Si vous utilisez un système d’exploitation de type Unix, comme Linux ou MacOS, vous avez peut-être déjà entendu parler de ces termes : terminal, shell, tty et console. Mais savez-vous ce qu’ils signifient exactement et comment ils se rapportent les uns aux autres ? Dans cet article, nous allons vous expliquer la différence entre ces concepts et leur rôle dans l’interaction avec votre ordinateur.
Terminal, tty et console : des interfaces de saisie / sortie de texte
Un terminal, un tty et une console sont des interfaces qui permettent à l’utilisateur de communiquer avec l’ordinateur en utilisant du texte. Ils sont souvent confondus car ils ont des origines et des fonctions similaires, mais ils ne sont pas exactement la même chose.
Terminal : un périphérique ou un programme qui émule un périphérique
Le mot terminal vient du domaine de l’électronique et désigne un point de connexion entre deux circuits. Dans le contexte informatique, il s’agit d’un périphérique qui permet à l’utilisateur d’envoyer des commandes à l’ordinateur et de recevoir des réponses sous forme de texte. Il s’agit généralement d’un clavier et d’un écran, mais il peut aussi s’agir d’un appareil plus ancien, comme une machine à écrire ou un téléscripteur.
Un terminal peut être physique ou virtuel. Un terminal physique est un appareil réel, connecté à l’ordinateur par un câble ou une liaison sans fil. Un terminal virtuel est un programme qui simule le comportement d’un terminal physique sur l’écran de l’ordinateur. Par exemple, Xterm est un terminal virtuel qui s’exécute dans le système X Window, Screen est un terminal virtuel qui permet de créer plusieurs sessions de terminal dans une seule fenêtre, et Ssh est un terminal virtuel qui permet de se connecter à distance à un autre ordinateur.
Dans la terminologie Unix, un terminal est souvent synonyme de tty, qui est une abréviation de téléscripteur. Un tty est un type spécial de fichier qui représente un terminal et qui implémente des commandes supplémentaires (appelées ioctls) pour contrôler les paramètres du terminal, comme la vitesse, le mode, la taille, etc. Il existe deux types de tty : les tty réels, qui correspondent aux terminaux physiques, et les pseudo-tty, qui correspondent aux terminaux virtuels.
Console : le terminal principal de l’ordinateur
Une console est un terminal qui est directement connecté à l’ordinateur et qui sert à contrôler le démarrage, l’arrêt et le dépannage du système. Le mot console vient du domaine du mobilier et désigne un meuble étroit qui se fixe au mur. Dans le contexte informatique, une console est souvent un terminal physique qui se trouve à proximité de l’ordinateur, comme un clavier et un écran en mode texte.
Une console peut aussi être virtuelle, c’est-à-dire qu’elle peut être affichée sur l’écran de l’ordinateur en utilisant une combinaison de touches spéciale. Par exemple, sur Linux et FreeBSD, il existe plusieurs consoles virtuelles, accessibles par les touches Ctrl+Alt+F1 à F12. Chaque console virtuelle est un tty différent, qui peut être utilisé pour se connecter à l’ordinateur avec un nom d’utilisateur et un mot de passe.
Shell : un interpréteur de ligne de commande
Un shell est un programme, une interface qui permet à l’utilisateur de communiquer avec l’ordinateur en utilisant des lignes de commande. Il s’agit d’un interpréteur, c’est-à-dire qu’il lit les commandes entrées par l’utilisateur, les analyse, les exécute et affiche les résultats. Le mot shell vient du domaine de la biologie et désigne la coquille qui protège le corps d’un animal. Dans le contexte informatique, un shell est une couche qui protège l’utilisateur de la complexité du système.
Un shell peut être interactif ou non. Un shell interactif est un shell qui attend que l’utilisateur entre une commande, puis la traite et affiche le résultat. Un shell non interactif est un shell qui exécute un ensemble de commandes préétablies, stockées dans un fichier appelé script. Par exemple, Bash est un shell interactif et non interactif, qui est le shell par défaut sur la plupart des systèmes Unix. D’autres exemples de shell sont Zsh, Csh, Ksh, etc.
Un shell fonctionne en général avec un terminal, mais pas forcément. Un terminal fournit une interface de saisie / sortie de texte, tandis qu’un shell fournit une interface de commande. Il est possible d’utiliser un shell sans terminal, par exemple en utilisant une interface graphique, ou d’utiliser un terminal sans shell, par exemple en utilisant un programme qui n’accepte pas de commandes.
Conclusion
Un terminal, un tty, une console et un shell sont des concepts liés à l’interaction entre l’utilisateur et l’ordinateur en utilisant du texte. Ils ont des origines historiques et des fonctions spécifiques, mais ils sont souvent confondus car ils sont utilisés conjointement. Pour résumer, on peut dire que :
- Un terminal est un périphérique ou un programme qui permet à l’utilisateur d’envoyer et de recevoir du texte.
- Un tty est un type de fichier qui représente un terminal et qui permet de contrôler ses paramètres.
- Une console est le terminal principal de l’ordinateur, qui sert à le gérer.
- Un shell est un programme qui permet à l’utilisateur d’exécuter des commandes.
Nous espérons que cet article vous a permis de mieux comprendre la différence entre ces termes et leur rôle dans l’interaction avec votre ordinateur. Si vous avez des questions ou des commentaires, n’hésitez pas à nous les faire part.