Estoy confundido con la terminología. ¿Cuál es la diferencia entre shell, consola y terminal?
Estoy confundido con la terminología. ¿Cuál es la diferencia entre shell, consola y terminal?
Respuestas:
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 bash
el 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 .
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.
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:
En cada caso, los elementos de la GUI se "dibujan" con texto en lugar de píxeles.
Para una descripción más detallada: https://askubuntu.com/a/506628/130518
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:
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:
Pocos ejemplos de conchas que existen:
Solo he escrito cómo funcionan normalmente estos dos, hay otras formas en que funcionan, pero eso es para un usuario más avanzado.
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.
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.
prompt
y auncommand line
?