Pensez à un autre contexte, celui du développement.
Même si vous n'avez pas une connaissance très approfondie du développement, vous connaissez probablement les bases, à savoir : vous modifiez un programme, vous le soumettez à un compilateur ou à un interprète qui construit une application compilée.
La console est comme l'éditeur de votre programme ; elle vous aide à écrire mais n'exécute vraiment rien : une fois que vous avez terminé, vous l'envoyez au compilateur pour cela.
Vous pouvez utiliser votre éditeur préféré, vim, gedit, emacs, notepad++, Netbeans, eclipse etc., mais à la fin ce ne sont que des outils différents : si vous écrivez le même programme, la sortie sera la même.
Dans cette métaphore, le shell est le compilateur. Les commandes saisies dans le terminal sont envoyées au shell qui les interprète et les exécute immédiatement.
Ainsi, alors que les terminaux ne sont que des interfaces pour le shell, le shell contient le langage réel, comme c'est le cas pour le compilateur.
Évidemment, un terminal n'est pas exactement un éditeur de texte, principalement parce qu'il ne produit pas de fichier mais envoie du texte au shell sous-jacent et récupère la sortie de celui-ci.
Et le shell n'est pas un compilateur, en fait il interprète votre commande et l'exécute immédiatement au lieu de construire un exécutable.
Même avec cette grande différence, je trouve que cette métaphore aide beaucoup à comprendre cette idée.
13 votes
Et que dire de
prompt
et mêmeligne de commande
?2 votes
Jetez un coup d'œil à cette question de Unix & Linux : unix.stackexchange.com/questions/4126/…
8 votes
Ma femme a dit "l'écran noir"
0 votes
ITerm2, terminal, Hyper sont des terminaux. Zsh (z-shell), bash (Bourne again shell) sont des shells. Tout prend maintenant sens, c'est dans leurs noms! Personnellement, je ne vais pas m'embêter avec la console.