GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la differenza tra una console, un terminale e una shell?

Vedo molte domande vicine, ma le domande stesse mostrano un malinteso di fondo di alcuni termini importanti.

  • Perché dovrei usare Windows Terminal su PowerShell?
  • Non ho bisogno di WSL per bash, uso Cygwin.
  • Posso usare conemu con PowerShell Core o devo usare Windows Terminal?

Iniziamo con un glossario e chiariamo prima alcune parole.

Terminale

La parola Terminale deriva da terminare, a indicare che è l'estremità terminante o l'estremità "terminale" di un processo di comunicazione. Sentirai spesso "terminale stupido" quando ti riferisci a un ambiente basato su testo in cui il computer accanto al quale sei seduto sta solo ricevendo input e mostrando il testo mentre il vero lavoro avviene all'altra estremità in un mainframe o in un computer di grandi dimensioni.

TTY o "telescrivente" è stato il primo tipo di terminale. Piuttosto che uno schermo avresti una macchina da scrivere letterale davanti a te. Quando lo digiti, vedi il testo su un pezzo di carta E inserisci quel testo in un computer. Quando quel computer risponde, vedrai che la macchina da scrivere scrive automaticamente sullo stesso foglio.

Quando ci riferiamo a un Terminale in senso software, ci riferiamo a una versione software letterale di un TTY o Terminale. Il terminale di Windows è quello. È davvero bravo a visualizzare l'output testuale. Può ricevere input e trasmetterlo. Ma il Terminale non è intelligente. In realtà non elabora il tuo input, non guarda i tuoi file o pensa .

Console

La gente a metà del 20° secolo aveva un mobile nel proprio soggiorno chiamato consolle o consolle. Una console nel contesto dei computer è una console o un armadio con uno schermo e una tastiera combinati al suo interno. Ma è effettivamente un terminale. Tecnicamente la Console è il dispositivo e il Terminale è ora il programma software all'interno della Console.

Nel mondo del software un Terminale e una Console sono, a tutti gli effetti, sinonimi.

Conchiglia

Una shell è il programma a cui il terminale invia l'input dell'utente. La shell genera l'output e lo restituisce al terminale per la visualizzazione. Ecco alcuni esempi di Shell:

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

Ecco un punto importante che dovrebbe avere più senso ora che hai questi terminali:La scelta della shell non determina e non dovrebbe determinare la scelta dell'applicazione del terminale.

A parte: WSL e WSL2 (il sottosistema Windows per Linux) sono Linux locali completi (o molti Linux) che funzionano su Windows 10. Sono completi e reali. WSL2 fornisce un vero kernel Linux e funziona su Windows. Cygwin NON è un Linux. Cygwin è una vasta raccolta di strumenti GNU e Open Source che forniscono funzionalità simili a Linux su Windows, ma non è Linux. È un simulacro. Sono programmi di utilità GNU compilati contro Win32. È fantastico, ma è importante che tu sappia qual è la differenza. Cygwin potrebbe consentirti di eseguire gli script della shell bash ma NON eseguirà Apache, Docker o altri binari ELF reali e app Linux.

La tua scelta di console Windows?

Ci sono un certo numero di shell fornite con Windows. Ecco alcuni che sto correndo ora. Notare il "cromo" o il bordo e il titolo intorno a loro? Quelle shell sono tutte ospitate da una console Windows legacy di cui non hai mai sentito parlare chiamata conhost.exe. Puoi andare al prompt dei comandi, digitare powershell, cmd o ubuntu e verrà eseguito un numero qualsiasi di shell. Conhost fa il lavoro di input e output.

Ora, dimentica che conhost esiste, perché fa schifo:è super vecchio.

Pseudo Console, Pseudo Terminale, PTY, Pseudo TTY (ConPTY)

Gli pseudoterminali sono emulatori di terminali o interfacce software che emulano terminali. Fingono di essere terminali come quelli sopra. *I sistemi Nix hanno da tempo un'infrastruttura pseudo-terminale (PTY) e ora anche Windows come pseudoconsole (ConPTY).

La nuova interfaccia ConPTY di Windows è il futuro delle console e dei terminali su Windows. Se scegli un'applicazione console di terze parti (non integrata) per Windows, assicurati che supporti ConPTY e sarà un'esperienza migliore rispetto ad alcune delle console precedenti che utilizzano lo screen scraping o altri hack.

Torna alla tua scelta di console Windows

Ricordando che ci sono molte shell che puoi usare in Windows, ci sono molte console di terze parti che puoi usare se non ti piace conhost.exe (e non dovresti).

  • Iper
  • ConEmu
  • cmder
  • Console2
  • ConsoleZ
    • capolinea
    • Terminale Fluent
    • ZOC
    • MobaXterm
    • Babun (morto)
    • 4NT/jpSoftware (non gratuito)
    • Mastice
    • MinTTY
    • Terminale Windows (gratuito in Microsoft Store)
    • XTermjs:un componente Typescript che ti consente di integrare i terminali nelle tue app
    • VSCode include un terminale
    • L'anteprima di Visual Studio 2019 include un terminale

    Tutti questi terminali supportano TUTTE le shell sopra e tutte le shell che ho perso. Perché una shell non è un terminale. Scegli quello che ti rende felice. Uso PowerShell Core e Ubuntu in WSL2 nel terminale di Windows.

    Spero che questo aiuti a chiarire le cose.

    Sponsor: Soffri di mancanza di chiarezza sui bug del software? Offri ai tuoi clienti l'esperienza che meritano e si aspettano con il monitoraggio degli errori di Raygun.com. Si installa in pochi minuti, provalo oggi stesso!


    Linux
    1. L'esatta differenza tra un "terminale", un "shell", un "tty" e una "console"?

    2. Differenza tra shell di accesso e shell non di accesso?

    3. La differenza tra un comando integrato e uno che non lo è?

    4. La differenza tra le citazioni "...", '...', $'...' e $"..." In The Shell?

    5. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

    Qual è la differenza tra Linux e Unix?

    Qual è la differenza tra Login e Non-Login Shell

    Qual è la differenza tra nohup e e commerciale

    Differenza tra '{}' e {} nel comando find?

    Qual è la differenza tra ls e l?

    Qual è la differenza tra unlink e rm?