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

188

Estoy confundido con la terminología. ¿Cuál es la diferencia entre shell, consola y terminal?

garras
fuente
8
y que tal prompty aun command line?
n611x007
1
Eche un vistazo a esta pregunta de Unix y Linux: unix.stackexchange.com/questions/4126/…
Flimm
44
Mi esposa dijo "la pantalla en negro"
Kenji Noguchi

Respuestas:

169

En el mundo de Linux, todos pueden verse igual desde el punto de vista del usuario en el teclado. Las diferencias están en cómo interactúan entre sí.

El shell es el programa que realmente procesa comandos y devuelve resultados. La mayoría de los shells también gestionan procesos en primer plano y en segundo plano, historial de comandos y edición de línea de comandos. Estas características (y muchas más) son estándar en bashel shell más común en los sistemas Linux modernos.

Un terminal se refiere a un programa contenedor que ejecuta un shell. Hace décadas, este era un dispositivo físico que consistía en poco más que un monitor y un teclado. Como los sistemas unix / linux agregaron mejores sistemas de multiprocesamiento y ventanas, este concepto de terminal se resumió en software. Ahora tiene programas como Gnome Terminal que inicia una ventana en un entorno de ventanas Gnome que ejecutará un shell en el que puede ingresar comandos.

La consola es un tipo especial de terminal . Históricamente, la consola era un solo teclado y monitor conectado a un puerto de consola serie dedicado en una computadora utilizada para la comunicación directa a un nivel bajo con el sistema operativo. Los sistemas linux modernos ofrecen consolas virtuales . Se accede a ellos mediante combinaciones de teclas (por ejemplo, Alt+ F1o Ctrl+ Alt+ F1; la tecla de función numera diferentes consolas) que se manejan en niveles bajos del sistema operativo Linux; esto significa que no hay un servicio especial que deba instalarse y configurarse para ejecutarse . La interacción con la consola también se realiza mediante un programa de shell .

Doug Harris
fuente
1
Antes de que los terminales fueran monitores con teclados, eran teletipos, una especie de máquina de escribir eléctrica. en.wikipedia.org/wiki/Teleprinter
Kevin Panko
13
La consola a veces significa "el teclado y el monitor conectados físicamente a esta computadora". Por ejemplo, "inicié sesión desde la consola porque el servidor no respondía a la red".
Kevin Panko
1
@ Douglas Harris: ¿Puedes agregar algunas fotos del hardware del que estás hablando?
garras
1
Cuando estaba en la universidad a fines de la década de 1980, trabajé mucho en los terminales DEC VT220 - en.wikipedia.org/wiki/VT220 - Ese es un buen ejemplo del dispositivo físico que describí.
Doug Harris
55
Entonces, si los terminales y las consolas son, en la actualidad, cada uno implementado en software, ¿cuál es la diferencia entre los dos (ahora)?
Gavin Hope
15

Un shell es un programa que muestra un aviso y espera a que escriba los comandos. Los ejecuta y luego imprime otra solicitud. Entonces, como CMD en Windows, o Bash en Unix. Puede ejecutarse en una terminal o en la consola.

Una consola era originalmente una cosa física, un panel de control. En términos de computación, generalmente significa la pantalla que ve antes de que la GUI se inicie o después de que finalice; a veces puede cambiar a mostrarlo en lugar de la GUI. Es el lugar donde el sistema operativo imprime mensajes de error. En una computadora multiusuario, es la pantalla la que está realmente conectada a la computadora. Solo para confundirlo, en Windows también puede significar una ventana con un shell de comando, es decir, un terminal.

Un terminal también era originalmente hardware, utilizado para comunicarse con una computadora. Hoy en día, generalmente se refiere a una ventana con una línea de comando (shell), que puede aparecer en una ventana GUI o en lugar de una GUI.

Peter Westlake
fuente
2

Un terminal es una interfaz basada en texto (posiblemente a un shell)

La diferencia entre consola y shell es una que todavía no entiendo, pero puedo decirte cómo un terminal es diferente de un shell.

El terminal es ( según Wikipedia ) "una interfaz de computadora en serie para la entrada y visualización de texto. La información se presenta como una matriz de caracteres formados preseleccionados".

Puede usar un terminal para interactuar con un shell, pero también puede usarlo para interactuar con una GUI basada en texto , a veces llamada interfaz de usuario de terminal . Por ejemplo:

  • Vim tiene elementos GUI que incluyen números de línea y pestañas con nombre
  • Nano tiene elementos GUI que incluyen un menú de ayuda de comandos
  • Tmux tiene elementos GUI que incluyen una barra de estado y líneas divisorias entre paneles
  • Minicom tiene elementos GUI que incluyen menús y una barra de estado

En cada caso, los elementos de la GUI se "dibujan" con texto en lugar de píxeles.

Nathan Long
fuente
No estoy seguro de que esta definición esté basada solo en texto. En cierto modo, algunas GUI podrían considerarse terminales de la OMI.
jiggunjer
2

Para principiantes principiantes

Para una descripción más detallada: https://askubuntu.com/a/506628/130518

  • terminal = entorno de entrada / salida de texto
  • consola = terminal física
  • shell = intérprete de línea de comando

Describiré el caso de uso más normal para esto en el siguiente texto.

Una terminal usa un shell. Un shell puede ejecutarse sin un terminal.

Para relacionarse con artículos cotidianos:

  • Terminal -> pantalla de TV en tu casa
  • Shell -> Programa que se ejecuta en la pantalla del televisor

Otra forma de verlo: los oídos (entrada) y la boca (salida) son los terminales para el sonido. Su cerebro es el intérprete de esos sonidos usando un caparazón específico (procesamiento).

El terminal es para nosotros los humanos, por lo que podemos leer y escribir en / desde el shell. Los shells pueden ejecutarse en procesos en segundo plano que no requieren interacción humana, por ejemplo, trabajo cron, y por lo tanto no requieren un terminal.

Pocos ejemplos de terminales que existen:

  • Símbolo del sistema
  • guake
  • terminal de gnomo
  • terminador

Pocos ejemplos de conchas que existen:

  • Golpetazo
  • sh (concha de Bourne)
  • PowerShell [windows]
  • zsh (caparazón Z)

Solo he escrito cómo funcionan normalmente estos dos, hay otras formas en que funcionan, pero eso es para un usuario más avanzado.

Karl Morrison
fuente
1

Piensa en otro contexto, que es el desarrollo.
Incluso si no tiene un conocimiento muy profundo del desarrollo, probablemente conozca los conceptos básicos, es decir: edita un programa, lo envía a un compilador o a un intérprete que crea una aplicación compilada.
La consola es como el editor de su programa; te ayuda a escribir pero realmente no ejecuta nada: cuando hayas terminado, lo envías al compilador para eso.

Puede usar su editor preferido, vim, gedit, emacs, notepad ++, Netbeans, eclise, etc.etc, pero al final son solo herramientas diferentes: si escribe el mismo programa, la salida será la misma.
En esta metáfora, el shell es el compilador. Los comandos que se ingresan en el terminal, se envían al shell que los interpreta y los ejecuta de inmediato.
Entonces, mientras que los terminales son solo front-end para el shell, el shell contiene el lenguaje real, como sucede con el compilador.

Obviamente, un terminal no es exactamente un editor de texto, principalmente porque no produce un archivo, sino que envía texto al shell subyacente y recupera la salida del mismo.

Y el shell no es un compilador, de hecho, interpreta su comando y lo ejecuta inmediatamente en lugar de crear un ejecutable.

Incluso con esta gran diferencia, encuentro esta metáfora para ayudar mucho a entender esta idea.

AgostinoX
fuente
0

Realmente no hay mucha diferencia. Hace mucho tiempo, cuando el "shell" era un programa, el "terminal" era una envoltura de interfaz para este programa, y ​​la "consola" era la conexión física a la computadora (teclado / pantalla).

Hay una diferencia dependiendo del sistema operativo que esté ejecutando. El shell "estándar" es BASH , que normalmente está disponible en todos los tipos de Linux / Unix. Windows usa un shell completamente diferente.

Josh K
fuente