Qu’est-ce qu’un terminal, un shell et une console et les différences

Dans tous les systèmes d'exploitations modernes comme Windows, MacOSX, Linux, FreeBSD, .... on peut tomber sur les termes Shell, terminal ou console.
Mais que signifient ces termes ?
Quelles sont les différences entre un terminal, console et un shell ?

Ce tutoriel répond à toutes ces questions en vous donnant une définition et explication pour bien comprendre ce qu'ils recouvrent.

Qu'est-ce qu'un terminal, un shell et une console et les différences

Qu'est-ce qu'un terminal

Un terminal est un environnement d'entrée et de sortie.
Par exemple en entrée un clavier et en sortie un écran ou une imprimante.

Il faut bien comprendre que Console, Terminal et TTY sont étroitement liés.
À l'origine, ils signifiaient un équipement à travers lequel vous pourriez interagir avec un ordinateur: au début de Unix, cela signifiait un dispositif de style téléimprimeur ressemblant à une machine à écrire, parfois appelé téléscripteurs , ou «TTY».

téléimprimeurs qui ressemblent à une machine à écrire
https://en.wikipedia.org/wiki/Teleprinter

Le nom "terminal" est venu du point de vue électronique et le nom "console" du point de vue des meubles.
Très tôt dans l'histoire Unix, les claviers électroniques et les écrans sont devenus la norme pour les terminaux.

Un terminal informatique

Terminal peut aussi désigner le nom de l'application qui permet d'accéder à un shell pour interagir avec le système.
En réalité, il s'agit plutôt de pseudo-terminaux qui émulent un terminal physique.

Par exemple :

Qu'est-ce qu'une console

Une console est généralement une borne du sens physique qui est par une certaine définition le terminal primaire directement connecté à une machine.
Sur Unix la console apparaît au système d'exploitation en tant que (mise en œuvre du noyau) TTY.
Sur certains systèmes, tels que Linux et FreeBSD, la console apparaît comme plusieurs TTYS (commutateurs de combinaisons de clés spéciales entre ces TTY).
Juste pour confondre les choses, le nom donné à chaque TTY peut être "Console", "Console virtuelle", "Terminal virtuel" et d'autres variations.

Sur Windows, l'architecture de la console s'article autour du processus ConHost.
Tout comme sur Linux, Windows possède aussi une pseudoconsole, parfois également appelée Pseudo Console, Conty, Gold The Windows Pty.
Elle propose un mécanisme conçu pour créer un hôte externe pour des activités de sous-système de mode-mode de caractère qui remplacent la partie interactivité de l'utilisateur de la fenêtre d'hôte de la console par défaut.

L'architecture de la console Windows avec ConHost, ConPPTy

Cela permet notamment l'existence de PowerShell de plus en plus présent dans le système.

De nos jours avec les ordinateurs modernes, le mot console et terminal ont plutôt tendance à se confondre.

Qu'est-ce qu'un shell

Le shell a toujours été présent - à partir de l'aube d'UNIX.
Il s'agissait du programme qui a été exécuté après avoir entré votre nom de connexion et votre mot de passe sur le terminal pour accéder à l'ordinateur central.
Le premier programme Shell était le shell Thompson (SH) de 1971, qui a été remplacée en 1977 par Bourne Shell, également appelée SH. Tôt, il a été conçu de sorte que ce n'était qu'un autre programme pouvant être mis à jour facilement et que les utilisateurs pouvaient exécuter leur propre programme au lieu de la coque par défaut.

Le Shell est l'interpréteur en ligne de commande, il permet à un utilisateur de s'identifier sur une console ou un terminal.
Il fournit un certaines nombres de commandes pour interagir avec le système d'exploitation.
En général, il permet aussi de créer des fichiers script que l'on nomme script pour exécuter plusieurs commandes l'une après l'autre. C'est donc aussi un langage de programmation.

  • Sur Linux : Bourne shell (sh), KornShell (ksh), C shell (csh), tcsh ,bash, Z shell (zsh)
  • Sur Windows : PowerShell

Quelle est la différence entre un terminal, un shell et une console

En résumé et pour prendre ce qui est expliqué dans ce tutoriel.
Voici les définitions :

  • Terminal = TTY : Environnement d'entrée / sortie texte
  • Console : terminal physique
  • Shell : Interprète ligne de commande

En clair donc, lorsque vous utilisez Linux, vous ouvrez un terminal ou une console pour accéder à un Shell afin de passer des commandes.