GNU/Linux >> Tutoriels Linux >  >> Linux

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

Je vois beaucoup de questions proches, mais les questions elles-mêmes montrent une incompréhension sous-jacente de certains termes importants.

  • Pourquoi devrais-je utiliser Windows Terminal plutôt que PowerShell ?
  • Je n'ai pas besoin de WSL pour bash, j'utilise Cygwin.
  • Puis-je utiliser conemu avec PowerShell Core ou dois-je utiliser Windows Terminal ?

Commençons par un glossaire et clarifions d'abord quelques mots.

Terminal

Le mot Terminal vient de terminate, indiquant qu'il s'agit de l'extrémité de terminaison ou de l'extrémité "terminale" d'un processus de communication. Vous entendrez souvent "terminal stupide" lorsque vous vous référez à un environnement basé sur du texte où l'ordinateur à côté duquel vous êtes assis ne fait que prendre des entrées et afficher du texte tandis que le vrai travail se déroule à l'autre bout dans un ordinateur central ou un gros ordinateur.

TTY ou "téléimprimeur" était le premier type de terminal. Plutôt qu'un écran, vous auriez une véritable machine à écrire devant vous. Lorsque vous tapez dessus, vous voyez le texte sur une feuille de papier ET vous saisissez ce texte dans un ordinateur. Lorsque cet ordinateur répond, vous verrez que la machine à écrire tape automatiquement sur le même papier.

Lorsque nous nous référons à un terminal au sens logiciel, nous faisons référence à une version logicielle littérale d'un ATS ou d'un terminal. Le terminal Windows est cela. C'est vraiment bon pour afficher la sortie textuelle. Il peut recevoir des commentaires et les transmettre. Mais le Terminal n'est pas intelligent. Il ne traite pas réellement votre entrée, il ne regarde pas vos fichiers et ne pense .

Console

Au milieu du XXe siècle, les gens avaient un meuble dans leur salon appelé console ou meuble console. Une console dans le contexte des ordinateurs est une console ou une armoire avec un écran et un clavier combinés à l'intérieur. Mais, c'est effectivement un Terminal. Techniquement, la console est l'appareil et le terminal est maintenant le programme logiciel à l'intérieur de la console.

Dans le monde du logiciel, un Terminal et une Console sont, à toutes fins utiles, synonymes.

Coquille

Un shell est le programme auquel le terminal envoie une entrée utilisateur. Le shell génère une sortie et la renvoie au terminal pour affichage. Voici quelques exemples de Shells :

  • bash, poisson, zsh, ksh, sh, tsch
  • PowerShell, pwsh
  • cmd, yori, 4dos, command.com

Voici un point important qui devrait avoir plus de sens maintenant que vous avez ces terminaux - Votre choix de shell ne dicte pas et ne devrait pas dicter votre choix d'application de terminal.

À part : WSL et WSL2 (le sous-système Windows pour Linux) sont un Linux local complet (ou plusieurs Linux) qui s'exécutent sur Windows 10. Ils sont complets et réels. WSL2 embarque un vrai noyau Linux et s'exécute sous Windows. Cygwin n'est PAS un Linux. Cygwin est une grande collection d'outils GNU et Open Source qui fournissent des fonctionnalités similaires à Linux sur Windows - mais ce n'est pas Linux. C'est un simulacre. Ce sont des utilitaires GNU compilés avec Win32. C'est génial, mais il est important que vous sachiez quelle est la différence. Cygwin peut vous permettre d'exécuter vos scripts shell bash, mais il n'exécutera PAS Apache, Docker ou d'autres applications binaires ELF et Linux réelles.

Votre choix de consoles Windows ?

Il existe un certain nombre de shells livrés avec Windows. Voici quelques-uns que je cours maintenant. Notez le "chrome" ou la bordure et le titre qui les entourent ? Ces shells sont tous hébergés par une console Windows héritée dont vous n'avez jamais entendu parler, appelée conhost.exe. Vous pouvez accéder à l'invite de commande, taper powershell, cmd ou ubuntu et n'importe quel nombre de shells s'exécutera. Conhost fait le travail d'entrée et de sortie.

Maintenant, oubliez que conhost existe, parce que ça craint - c'est super vieux.

Pseudo console, pseudo-terminal, PTY, pseudo-ATS (ConPTY)

Les pseudo-terminaux sont des émulateurs de terminaux ou des interfaces logicielles qui émulent des terminaux. Ils prétendent être des terminaux comme ceux ci-dessus. * Les systèmes Nix ont longtemps eu une infrastructure de pseudo-terminal (PTY) et maintenant Windows en tant que pseudo-console (ConPTY) également.

La nouvelle interface ConPTY de Windows est l'avenir des consoles et des terminaux sous Windows. Si vous choisissez une application de console tierce (non intégrée) pour Windows, assurez-vous qu'elle prend en charge ConPTY et ce sera une meilleure expérience que certaines des anciennes consoles qui utilisent le grattage d'écran ou d'autres hacks.

Retour à votre choix de consoles Windows

N'oubliez pas qu'il y a beaucoup de shells que vous pouvez utiliser dans Windows, il y a beaucoup de consoles tierces que vous pouvez utiliser si vous n'aimez pas conhost.exe (et vous ne devriez pas).

  • Hyper
  • ConEmu
  • commande
  • Console2
  • ConsoleZ
    • Terminus
    • FluentTerminal
    • ZDC
    • MobaXterm
    • Babun (mort)
    • 4NT/jpLogiciel (payant)
    • Mastic
    • MinTTY
    • Terminal Windows (gratuit dans le Microsoft Store)
    • XTermjs :un composant Typescript qui vous permet d'intégrer des terminaux dans vos applications
    • VSCode inclut un terminal
    • La préversion de Visual Studio 2019 inclut un terminal

    Tous ces terminaux prennent en charge TOUS les shells ci-dessus et tous les shells que j'ai manqués. Parce qu'un shell n'est pas un terminal. Choisissez celui qui vous rend heureux. J'utilise PowerShell Core et Ubuntu dans WSL2 dans le terminal Windows.

    J'espère que cela aide à clarifier les choses.

    Parrain : Vous souffrez d'un manque de clarté autour des bugs logiciels ? Offrez à vos clients l'expérience qu'ils méritent et attendent avec la surveillance des erreurs de Raygun.com. S'installe en quelques minutes, essayez-le dès aujourd'hui !


    Linux
    1. La différence exacte entre un « terminal », un « shell », un « tty » et une « console » ?

    2. Différence entre le shell de connexion et le shell sans connexion ?

    3. La différence entre une commande intégrée et une qui ne l'est pas ?

    4. La différence entre les guillemets "...", "...", $'...' et $"..." dans le shell ?

    5. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

    Quelle est la différence entre InnoDB et MyISAM ?

    Quelle est la différence entre Linux et Unix ?

    Quelle est la différence entre la connexion et le shell sans connexion

    Linux – Quelle est la différence entre `su -` et `su –login` ?

    Différence entre GNUWin32 et cygwin

    Quelle est la différence entre unlink et rm ?