GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre una consola, una terminal y un shell?

Veo muchas preguntas que están cerca, pero las preguntas mismas muestran un malentendido subyacente de algunos términos importantes.

  • ¿Por qué usaría Windows Terminal en lugar de PowerShell?
  • No necesito WSL para bash, uso Cygwin.
  • ¿Puedo usar conemu con PowerShell Core o necesito usar Windows Terminal?

Comencemos con un glosario y aclaremos algunas palabras primero.

Terminal

La palabra Terminal proviene de terminar, lo que indica que es el extremo final o el extremo "terminal" de un proceso de comunicación. A menudo escuchará "terminal tonta" cuando se refiera a un entorno basado en texto en el que la computadora junto a la que está sentado solo recibe información y muestra texto, mientras que el trabajo real ocurre en el otro extremo en una computadora central o computadora grande.

TTY o "teletipo" fue el primer tipo de terminal. En lugar de una pantalla, tendrías una máquina de escribir literal frente a ti. Cuando escribe en él, está viendo el texto en una hoja de papel E ingresando ese texto en una computadora. Cuando esa computadora responda, verá que la máquina de escribir escribe automáticamente en el mismo papel.

Cuando nos referimos a una Terminal en el sentido de software, nos referimos a una versión de software literal de un TTY o Terminal. La Terminal de Windows es eso. Es muy bueno para mostrar la salida de texto. Puede recibir información y transmitirla. Pero la Terminal no es inteligente. En realidad, no procesa su entrada, no mira sus archivos ni piensa .

Consola

La gente a mediados del siglo XX tendría un mueble en su sala de estar llamado consola o gabinete de consola. Una consola en el contexto de las computadoras es una consola o gabinete con una pantalla y un teclado combinados en su interior. Pero, efectivamente es una Terminal. Técnicamente, la Consola es el dispositivo y la Terminal es ahora el programa de software dentro de la Consola.

En el mundo del software, una Terminal y una Consola son, a todos los efectos, sinónimos.

Concha

Un shell es el programa al que el terminal envía la entrada del usuario. El shell genera una salida y la devuelve a la terminal para su visualización. Estos son algunos ejemplos de conchas:

  • bash, pez, zsh, ksh, sh, tsch
  • PowerShell, pwsh
  • cmd, yori, 4dos, comando.com

Aquí hay un punto importante que debería tener más sentido ahora que tiene estos terminales:Su elección de shell no dicta ni debería dictar su elección de aplicación de terminal.

Aparte: WSL y WSL2 (el subsistema de Windows para Linux) son un Linux local completo (o muchos Linux) que se ejecutan en Windows 10. Son completos y reales. WSL2 incluye un kernel de Linux real y se ejecuta en Windows. Cygwin NO es un Linux. Cygwin es una gran colección de herramientas GNU y de código abierto que brindan una funcionalidad similar a Linux en Windows, pero no es Linux. Es un simulacro. Son utilidades GNU compiladas contra Win32. Es genial, pero es importante que sepas cuál es la diferencia. Cygwin puede permitirle ejecutar sus scripts bash shell, pero NO ejecutará Apache, Docker u otros binarios ELF reales y aplicaciones de Linux.

¿Su elección de consolas de Windows?

Hay una serie de shells que se envían con Windows. Aquí hay algunos que estoy ejecutando ahora. ¿Observe el "cromo" o el borde y el título alrededor de ellos? Todos esos shells están alojados en una consola de Windows heredada de la que nunca ha oído hablar llamada conhost.exe. Puede ir al símbolo del sistema, escribir powershell, cmd o ubuntu y se ejecutará cualquier número de shells. Conhost hace el trabajo de entrada y salida.

Ahora, olvídate de que conhost existe, porque apesta, es muy antiguo.

Pseudo Consola, Pseudo Terminal, PTY, Pseudo TTY (ConPTY)

Las pseudoterminales son emuladores de terminales o interfaces de software que emulan terminales. Se hacen pasar por terminales como los de arriba. *Los sistemas Nix han tenido durante mucho tiempo una infraestructura de pseudo-terminal (PTY) y ahora Windows también como una pseudoconsola (ConPTY).

La nueva interfaz ConPTY de Windows es el futuro de las consolas y terminales en Windows. Si elige aplicaciones de consola de terceros (no integradas) para Windows, asegúrese de que sea compatible con ConPTY y será una mejor experiencia que algunas de las consolas más antiguas que usan raspado de pantalla u otros trucos.

Volver a su elección de consolas de Windows

Recordando que hay muchos shells que puedes usar en Windows, hay muchas consolas de terceros que puedes usar si no te gusta conhost.exe (y no deberías).

  • Híper
  • ConEmu
  • cmder
  • Consola2
  • Consola Z
    • Término
    • Terminal fluido
    • ZOC
    • MobaXterm
    • Babun (muerto)
    • 4NT/jpSoftware (no gratuito)
    • masilla
    • MinTTY
    • Terminal de Windows (gratis en Microsoft Store)
    • XTermjs:un componente TypeScript que le permite integrar terminales en sus aplicaciones
    • VSCode incluye una terminal
    • La vista previa de Visual Studio 2019 incluye una terminal

    Todos estos terminales admiten TODOS los shells anteriores y cualquier shell que me haya perdido. Porque un shell no es un terminal. Elige el que te haga feliz. Uso PowerShell Core y Ubuntu en WSL2 en la Terminal de Windows.

    Espero que esto ayude a aclarar las cosas.

    Patrocinador: ¿Sufre de falta de claridad en torno a los errores de software? Ofrezca a sus clientes la experiencia que merecen y esperan con el control de errores de Raygun.com. Se instala en minutos, ¡pruébalo hoy!


    Linux
    1. ¿La diferencia exacta entre un 'terminal', un 'shell', un 'tty' y una 'consola'?

    2. ¿La diferencia entre un comando incorporado y uno que no lo es?

    3. ¿La diferencia entre las cotizaciones "...", '...', $'...' y $"..." en el caparazón?

    4. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

    5. Diferencia entre GNUWin32 y cygwin

    ¿Cuál es la diferencia entre Linux y Unix?

    ¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

    Linux:¿cuál es la diferencia entre `su -` y `su –login`?

    ¿La diferencia entre Nss y Pam?

    ¿Cuál es la diferencia entre &> y >&en bash?

    ¿Cuál es la diferencia entre unlink y rm?