web-dev-qa-db-fra.com

Quelle est la différence entre Shell, console et terminal?

Je suis confondu avec la terminologie. Quelle est la différence entre Shell, console et terminal?

181
claws

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 .

161
Doug Harris

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.

14
Peter Westlake

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.

1
AgostinoX

Pour débutants débutants

Pour une description plus détaillée: https://askubuntu.com/a/506628/130518

  • terminal = environnement de saisie/sortie de texte
  • console = terminal physique
  • Shell = interpréteur de ligne de commande

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:

  • Terminal -> écran de télévision à la maison
  • Shell -> Programme qui s'exécute sur l'écran du téléviseur

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:

  • Invite de commande
  • guake
  • gnome-terminal
  • terminateur

Quelques exemples de coquillages existants:

  • Bash
  • sh (Bourne Shell)
  • PowerShell [Windows]
  • zsh (Z Shell)

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é.

1
Karl Morrison

Un terminal est une interface textuelle (éventuellement vers un shell)

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:

  • Vim comporte des éléments d'interface graphique, notamment des numéros de ligne et des onglets nommés
  • Nano a des éléments d'interface graphique, y compris un menu d'aide contenant des commandes
  • Tmux comporte des éléments d'interface graphique, y compris une barre d'état et des lignes de séparation entre les volets
  • Minicom a des éléments d'interface graphique, y compris des menus et une barre d'état

Dans chaque cas, les éléments de l'interface graphique sont "dessinés" avec du texte plutôt que des pixels.

0
Nathan Long

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.

0
Josh K