Je suis confondu avec la terminologie. Quelle est la différence entre Shell, console et terminal?
Dans le monde Linux, ils peuvent tous se ressembler du point de vue de l'utilisateur au clavier. Les différences sont dans la façon dont ils interagissent les uns avec les autres.
Le shell est le programme qui traite réellement les commandes et renvoie la sortie. La plupart des shells gèrent également les processus de premier plan et d'arrière-plan, l'historique des commandes et l'édition en ligne de commande. Ces fonctionnalités (et bien d’autres encore) sont standard dans bash
, le shell le plus répandu dans les systèmes linux modernes.
Un terminal fait référence à un programme d'encapsulation qui exécute un shell. Il y a des décennies, il s'agissait d'un périphérique physique constitué d'un peu plus qu'un moniteur et un clavier. Comme les systèmes unix/linux ont ajouté de meilleurs systèmes de multitraitement et de fenêtrage, ce concept de terminal a été résumé dans un logiciel. Vous avez maintenant des programmes tels que Gnome Terminal qui ouvre une fenêtre dans un environnement de fenêtre Gnome qui exécutera un shell dans lequel vous pouvez entrer des commandes.
La console est une sorte spéciale de terminal . Auparavant, la console était constituée d'un seul clavier et d'un moniteur branché sur un port de console série dédié d'un ordinateur utilisé pour la communication directe à un niveau bas avec le système d'exploitation. Les systèmes linux modernes fournissent des consoles virtuelles . Celles-ci sont accessibles via des combinaisons de touches (par exemple Alt+F1 ou Ctrl+Alt+F1; la touche de fonction numérote différentes consoles) gérées à des niveaux bas du système d'exploitation Linux - cela signifie qu'aucun service spécial ne doit être installé et configuré pour être exécuté. L'interaction avec la console s'effectue également à l'aide d'un programme Shell .
Un shell est un programme qui affiche une invite et attend que vous tapiez des commandes. Il les exécute puis imprime une autre invite. Donc, comme CMD sous Windows ou Bash sous Unix. Il peut fonctionner dans un terminal ou sur la console.
Une console était à l'origine une chose physique, un panneau de contrôle. En termes informatiques, cela signifie généralement l'affichage que vous voyez avant ou après la fin de l'interface graphique; vous pouvez parfois passer à l'afficher à la place de l'interface graphique. C'est l'endroit où le système d'exploitation imprime des messages d'erreur. Sur un ordinateur multi-utilisateur, c'est l'écran qui est réellement connecté à l'ordinateur. Pour vous dérouter, sous Windows, cela peut aussi signifier une fenêtre contenant une commande Shell, c’est-à-dire un terminal.
Un terminal était également à l'origine un matériel, utilisé pour communiquer avec un ordinateur. De nos jours, il fait généralement référence à une fenêtre avec une ligne de commande (Shell), qui peut apparaître dans une fenêtre graphique ou à la place d'une interface graphique.
Pensez à un autre contexte, c'est le développement.
Même si vous n’avez pas une connaissance très approfondie du développement, vous connaissez probablement les bases, c’est-à-dire que vous éditez 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; cela vous aide en écriture mais il n'exécute vraiment rien: lorsque vous avez fini, vous l'envoyez au compilateur pour cela.
Vous pouvez utiliser votre éditeur préféré, vim, gedit, emacs, notepad ++, Netbeans, eclise, etc., mais à la fin, ce ne sont que des outils différents: si vous écrivez le même programme, le résultat sera le même.
Dans cette métaphore, le shell est le compilateur. Les commandes entrées 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, celui-ci contient le langage actuel, comme dans le cas du compilateur.
De toute évidence, 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 en récupère la sortie.
Et le shell n’est pas un compilateur, il interprète votre commande et l’exécute immédiatement au lieu de créer un exécutable.
Même avec cette grande différence, je trouve que cette métaphore m'aide beaucoup à comprendre cette idée.
Pour une description plus détaillée: https://askubuntu.com/a/506628/130518
Je vais décrire le cas d'utilisation le plus normal pour cela dans le texte suivant.
Un terminal utilise un Shell. Un shell peut fonctionner sans terminal.
Se rapporter aux objets de tous les jours:
Une autre façon de voir les choses: vos oreilles (entrée) et votre bouche (sortie) sont les bornes du son. Votre cerveau interprète ces sons à l'aide d'un shell spécifique (traitement).
Le terminal est pour nous les humains, nous pouvons donc lire et écrire dans/à partir du shell. Les shells peuvent s'exécuter en arrière-plan, ce qui ne nécessite pas d'interaction humaine, par exemple. travail cron, et ne nécessite donc pas de terminal.
Quelques exemples de terminaux existants:
Quelques exemples de coquillages existants:
J'ai seulement écrit comment ces deux-là fonctionnent normalement, il y a d'autres façons de les faire, mais c'est pour un utilisateur plus avancé.
La différence entre console et Shell est une différence que je ne comprends pas encore, mais je peux vous dire en quoi un terminal est différent d’un Shell.
Le terminal est ( selon Wikipedia ) "une interface informatique série pour la saisie et l'affichage de texte. Les informations sont présentées sous la forme d'un tableau de caractères formés présélectionnés".
Vous pouvez utiliser un terminal pour interagir avec un shell, mais également pour interagir avec un interface graphique à base de texte, parfois appelé Interface utilisateur du terminal . Par exemple:
Dans chaque cas, les éléments de l'interface graphique sont "dessinés" avec du texte plutôt que des pixels.
Il n'y a vraiment pas beaucoup de différence. Il y a bien longtemps, lorsque "Shell" était un programme, le "terminal" encapsulait ce programme et la "console" la connexion physique à l'ordinateur (clavier/écran).
Il y a une différence selon le système d'exploitation que vous utilisez. Le shell "standard" est BASH , qui est normalement disponible sur toutes les versions de Linux/Unix. Windows utilise un shell totalement différent.