On utilise souvent les termes “shell” et “terminal” de façon interchangeable, mais que veulent dire ses deux termes ?

Terminal

De nos jour quand on parle d’un terminal, on parle d’un programme sur notre ordinateur qui ressemble à une boite noire avec du texte en blanc – ou en vert si on est dans un film d’action avec des hackers.

En réalité, si on voulait être pédant, ce genre de programme s’appelle un émulateur de terminal car leur rôle est de faire semblant d’être un terminal tel qu’on en avait dans les débuts de l’informatique.

Car figurez vous, fut un temps, il n’était pas possible d’interagir avec un ordinateur à l’aide d’un clavier, d’une souris et un écran.

Par exemple, une façon très commune d’interagir avec les ordinateurs était d’utiliser des cartes perforées. L’ordinateur était conçu pour lire des instructions et des données sur des cartes perforées avec un certain format et pour répondre à son tour en perforant une carte ou avec des témoins lumineux sur un tableau de contrôle.

Quand le terminal est apparu il était une façon plus pratique pour un humain de saisir des données à l’intention d’un ordinateur. Les premiers terminaux avaient bel et bien un clavier modelé après des machines à écrire, mais ils n’avaient pas d’écran. Pendant longtemps ont existé des terminaux qui imprimaient leurs réponses sur du papier.

En informatique on retrouve le terme imprimer un peu partout lorsqu’il s’agit d’afficher quelque chose “dans le terminal” – exemple : la fonction printf en C.

Shell

Un shell, c’est une programme que l’on exécute depuis un terminal. C’est une interface textuelle dont le rôle est interpreter ce que l’on écrit en une action à faire sur l’ordinateur.

Des actions du genre :

  • changer de dossier currant ;
  • afficher les fichiers présents dans le dossier currant ;
  • exécuter un éditeur de texte ;
  • exécuter une calculatrice ;
  • exécuter un script écrit précédemment.

Sur Linux, parmi les shells les plus populaire on trouve bash, zsh, sh et fish. Sur Windows il s’agit de cmd et de PowerShell.