229 votes

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

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

13 votes

Et que dire de prompt et même ligne 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"

206voto

Keith Sirmons Points 2558

Dans le monde linux, ils peuvent tous sembler identiques du point de vue de l'utilisateur au clavier. Les différences résident dans la manière dont ils interagissent entre eux.

Le shell est le programme qui traite réellement les commandes et renvoie les résultats. La plupart des shells gèrent également les processus en premier plan et en arrière-plan, l'historique des commandes et l'édition en ligne de commandes. Ces fonctionnalités (et bien d'autres) sont standard dans bash, le shell le plus courant dans les systèmes linux modernes.

Un terminal fait référence à un programme conteneur exécutant un shell. Il y a des décennies, il s'agissait d'un appareil physique composé de peu plus qu'un écran et un clavier. À mesure que les systèmes unix/linux ajoutaient de meilleurs systèmes de multi-processus et de fenêtrage, ce concept de terminal a été abstractisé en logiciel. Maintenant, vous avez des programmes tels que Gnome Terminal qui lance une fenêtre dans un environnement de fenêtrage Gnome où s'exécute un shell dans lequel vous pouvez entrer des commandes.

La console est une sorte spéciale de terminal. Historiquement, la console était un clavier et un écran uniques branchés sur un port de console série dédié sur un ordinateur utilisé pour une communication directe à un niveau bas avec le système d'exploitation. Les systèmes linux modernes fournissent des consoles virtuelles. Elles sont accessibles via des combinaisons de touches (par ex. Alt+F1 ou Ctrl+Alt+F1; les numéros de touches de fonction différent selon les consoles) qui sont gérées à des niveaux bas du système d'exploitation linux -- cela signifie qu'il n'y a pas de service spécial à installer et configurer pour les exécuter. L'interaction avec la console se fait également en utilisant un programme shell.

4 votes

Avant les terminaux étaient des moniteurs avec des claviers, ils étaient des téléimprimeurs - une sorte de machine à écrire électrique. fr.wikipedia.org/wiki/Téléimprimeur

0 votes

Ah, oui, c'était ma première interaction avec un ordinateur. Merci de me le rappeler.

0 votes

Windows a également des "shells" (cmd.exe et PowerShell étant les plus courants) et des terminaux (le "Windows Console").

17voto

Mikle Points 673

Un shell est un programme qui affiche un invite de commandes et attend que vous tapiez des commandes. Il les exécute puis affiche un autre invite. Donc, comme CMD sous Windows, ou Bash sous Unix. Il peut s'exécuter 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 le démarrage de l'interface graphique ou après qu'elle se termine ; vous pouvez parfois basculer pour l'afficher à la place de l'interface graphique. C'est l'endroit où le système d'exploitation imprime les messages d'erreur. Sur un ordinateur multi-utilisateurs, c'est l'affichage qui est réellement connecté à l'ordinateur. Juste pour vous embrouiller, sur Windows, cela peut aussi signifier une fenêtre avec un shell de commandes à l'intérieur, c'est-à-dire un terminal.

Un terminal était également autrefois du matériel, utilisé pour communiquer avec un ordinateur. De nos jours, cela 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.

0 votes

Alors bash n'est pas un shell si bash_profile exécute startx?

0 votes

@RichieHH, Je dirais que le processus bash est toujours une coquille, mais s'il est uniquement utilisé pour exécuter startx, c'est une coquille qui ne fait pas grand-chose.

13voto

Karl Morrison Points 2475

Pour les débutants

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

  • terminal = environnement d'entrée/sortie de texte
  • console = terminal physique (quelque chose que vous pouvez réellement toucher)
  • shell = interpréteur de lignes de commande

Je vais décrire le cas d'utilisation le plus courant pour cela dans le texte suivant.

Un terminal utilise un shell. Un shell peut fonctionner sans terminal.

Pour se rapporter à des objets de la vie quotidienne :

  • Terminal -> écran de télévision dans votre maison
  • Shell -> Programme qui s'exécute sur l'écran de télévision

Une autre façon de le voir : Vos oreilles (entrée) et votre bouche (sortie) sont les terminaux pour le son. Votre cerveau est l'interprète de ces sons en utilisant un shell spécifique (traitement).

Le terminal est pour nous humains, pour que nous puissions lire et écrire vers/depuis le shell. Les shells peuvent s'exécuter dans des processus en arrière-plan qui ne nécessitent pas d'interaction humaine, par exemple les tâches cron, et ne nécessitent donc pas de terminal.

Quelques exemples de terminaux qui existent :

  • Invite de commandes
  • guake
  • gnome-terminal
  • terminator

Quelques exemples de shells qui existent :

  • Bash
  • sh (Bourne shell)
  • PowerShell [windows]
  • zsh (Z shell)

J'ai seulement écrit comment ces deux éléments fonctionnent normalement, il existe d'autres façons dont ils fonctionnent, mais c'est pour un utilisateur plus avancé.

0 votes

Il me semble qu'une instance de l'interpréteur bash exécutant un script est toujours un shell.

1voto

AgostinoX Points 119

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.

0voto

Josh K Points 12249

Il n'y a vraiment pas beaucoup de différence. Il y a longtemps, lorsque le "shell" était un programme, le "terminal" était un wrapper frontal à ce programme, et la "console" était la connexion physique à l'ordinateur (clavier / écran).

Il y a une différence en fonction du système d'exploitation que vous utilisez. Le shell "standard" est BASH, qui est normalement disponible sur toutes les variantes de Linux / Unix. Windows utilise un shell totalement différent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X