Creo que estos términos casi se refieren a lo mismo, cuando se usan libremente:
- terminal
- cáscara
- tty
- consola
¿A qué se refiere exactamente cada uno de estos términos?
Creo que estos términos casi se refieren a lo mismo, cuando se usan libremente:
¿A qué se refiere exactamente cada uno de estos términos?
Respuestas:
Una terminal está al final de un cable eléctrico, un caparazón es el hogar de una tortuga, tty es una abreviatura extraña y una consola es una especie de gabinete.
Bueno, etimológicamente hablando, de todos modos.
En terminología de Unix, la respuesta corta es que
Consola, terminal y tty están estrechamente relacionados. Originalmente, se referían a un equipo a través del cual se podía interactuar con una computadora: en los primeros días de Unix, eso significaba un dispositivo de estilo teleimpresor que se parecía a una máquina de escribir, a veces llamado teletipo, o "tty" en forma abreviada. El nombre "terminal" vino desde el punto de vista electrónico, y el nombre "consola" desde el punto de vista de los muebles. Muy temprano en la historia de Unix, los teclados y pantallas electrónicas se convirtieron en la norma para los terminales.
En la terminología de Unix, un tty es un tipo particular de archivo de dispositivo que implementa una serie de comandos adicionales ( ioctls ) más allá de leer y escribir. En su significado más común, terminal es sinónimo de tty. El núcleo proporciona algunos ttys en nombre de un dispositivo de hardware, por ejemplo, con la entrada proveniente del teclado y la salida yendo a una pantalla de modo de texto, o con la entrada y salida transmitidas a través de una línea en serie. Otros ttys, a veces llamados pseudo-ttys , son proporcionados (a través de una capa delgada del núcleo) por programas llamados emuladores de terminal , como Xterm (que se ejecuta en el sistema X Window ), Pantalla(que proporciona una capa de aislamiento entre un programa y otro terminal), Ssh (que conecta un terminal en una máquina con programas en otra máquina), Expect (para las secuencias de comandos de interacciones de terminal), etc.
La palabra terminal también puede tener un significado más tradicional de un dispositivo a través del cual uno interactúa con una computadora, generalmente con un teclado y una pantalla. Por ejemplo, un terminal X es un tipo de cliente ligero , una computadora de propósito especial cuyo único propósito es manejar un teclado, pantalla, mouse y ocasionalmente otros periféricos de interacción humana, con las aplicaciones reales ejecutándose en otra computadora más poderosa.
Una consola es generalmente un terminal en el sentido físico que es, por alguna definición, el terminal primario conectado directamente a una máquina. La consola aparece para el sistema operativo como un tty (implementado por el núcleo). En algunos sistemas, como Linux y FreeBSD, la consola aparece como varios ttys (las combinaciones de teclas especiales cambian entre estos ttys); solo para confundir las cosas, el nombre dado a cada tty particular puede ser "consola", "consola virtual", "terminal virtual" y otras variaciones.
Consulte también ¿Por qué un terminal virtual es "virtual" y qué / por qué / dónde está el terminal "real"? .
Un shell es la interfaz principal que los usuarios ven cuando inician sesión, cuyo objetivo principal es iniciar otros programas. (No sé si la metáfora original es que el shell es el entorno hogareño para el usuario, o si el shell es lo que otros programas están ejecutando).
En los círculos de Unix, Shell se ha especializado en significar un shell de línea de comandos , centrado en ingresar el nombre de la aplicación que se desea iniciar, seguido de los nombres de archivos u otros objetos sobre los que la aplicación debería actuar, y presionar la tecla Enter. Otros tipos de entornos no usan la palabra "shell"; por ejemplo, los sistemas de ventanas involucran " administradores de ventanas " y " entornos de escritorio ", no un "shell".
Hay muchas conchas de Unix diferentes. Los shells populares para uso interactivo incluyen Bash (el valor predeterminado en la mayoría de las instalaciones de Linux), zsh (que enfatiza el poder y la personalización) y fish (que enfatiza la simplicidad).
Los shells de línea de comandos incluyen construcciones de control de flujo para combinar comandos. Además de escribir comandos en un mensaje interactivo, los usuarios pueden escribir scripts. Los shells más comunes tienen una sintaxis común basada en Bourne_shell . Cuando se habla de " programación de shell ", el shell casi siempre se supone que es un shell de estilo Bourne. Algunos shells que a menudo se usan para scripts pero carecen de funciones interactivas avanzadas incluyen el shell Korn (ksh) y muchas variantes de cenizas . Casi cualquier sistema similar a Unix tiene un shell de estilo Bourne instalado como /bin/sh
, por lo general, ash, ksh o bash.
En la administración del sistema Unix, el shell de un usuario es el programa que se invoca cuando inician sesión. Las cuentas de usuario normales tienen un shell de línea de comandos, pero los usuarios con acceso restringido pueden tener un shell restringido o algún otro comando específico (por ejemplo, para la transferencia de archivos -solo cuentas).
La división del trabajo entre el terminal y el caparazón no es completamente obvia. Aquí están sus tareas principales.
\e[D
). El shell convierte las secuencias de control en comandos (por ejemplo, \e[D
→ backward-char
).M-x shell
en Emacs.foo
", "cambiar el color de primer plano a verde", "mover el cursor a la siguiente línea", etc. El terminal actúa siguiendo estas instrucciones.printk
prioridad suficiente (por ejemplo, kernel panics). Se configura pasando console=DEVICE,...
la línea de comando del núcleo (por ejemplo, console=ttyS0,115200
para el primer puerto serie, a 115.200 bps). Normalmente, el valor predeterminado es el terminal virtual, pero eso se puede cambiar cuando se compila el núcleo.
Un terminal o una consola es una pieza de hardware que utiliza un usuario para interactuar con un host. Básicamente un teclado junto con una pantalla de texto.
Hoy en día, casi todos los terminales y consolas representan los "virtuales".
El archivo que representa un terminal se llama, tradicionalmente, un archivo tty . Si busca en el directorio "/ dev" de un sistema UNIX, encontrará muchos archivos tty conectados a consolas virtuales (por ejemplo, tty1 en linux), terminales virtuales (por ejemplo, pts / 0) o hardware conectado físicamente (por ejemplo, ttyS0 es el terminal serie físico, si lo hay, conectado en el primer puerto serie del host).
Una consola debe ser una pieza de hardware conectada físicamente (o parte de) el host. Tiene un papel especial en el sistema: es el punto principal para acceder a un sistema para mantenimiento y algunas operaciones especiales solo se pueden realizar desde una consola (por ejemplo, ver single user mode
). Un terminal puede ser, y generalmente es, una pieza remota de hardware.
Por último, pero no menos importante, un shell es un programa especial que interactúa con un usuario a través de un tty controlador y ofrece al usuario la forma de iniciar otros programas (por ejemplo, bash, csh, tcsh).
Un emulador de terminal es un programa que emula un terminal físico (por ejemplo, xterm, gnome-terminal, minicom).
Entonces, cuando busca una "ventana de texto" en su sistema Linux (bajo X11), está buscando: un emulador de terminal , conectado a una terminal virtual , identificado por un archivo tty , dentro del cual se ejecuta un shell .
tty
en un emulador de terminal como Konsole de KDE, el resultado es / dev / pts / 0.
/dev/pts/0
es un archivo tty, un controlador de una interfaz programática expuesta por el núcleo. A través de este controlador, un programa (por ejemplo, el shell) puede interactuar con un terminal (real o virtual). Un emulador de terminal es un software que emula un terminal. El emulador le pide al núcleo que cree un controlador para permitir que los programas interactúen consigo mismos (ver man openpty
). Entonces, la información fluye desde el terminal (emulador) al controlador tty del kernel, al programa (y viceversa). Los programas y terminales no se comunican directamente, sino solo a través del archivo tty (el controlador).
Breve explicación:
La consola es una terminal. Un sistema tiene una consola y potencialmente múltiples terminales. La consola suele ser la interfaz principal para administrar una computadora, por ejemplo, mientras se está iniciando.
Un terminal es una sesión que puede recibir y enviar entradas y salidas para programas de línea de comandos. La consola es un caso especial de estos.
Un TTY es esencialmente un pseudo dispositivo, llámelo recurso de núcleo, que los procesos utilizan para acceder a un terminal específico. Los TTY pueden estar vinculados al hardware, como un puerto serie, o pueden ser virtuales, por ejemplo, creados cuando un usuario inicia sesión a través de una red
El shell es un programa que se utiliza para controlar y ejecutar programas. A menudo se usa de forma interactiva, a través de un terminal. Existen varios programas de Shell, Bash es posiblemente el shell más utilizado en la actualidad. Otros shells, sin ningún orden en particular, incluyen Bourne Shell, C-shell, Dash, Tsch, Ksh y el zsh cada vez más popular. Hay muchos más.
Cuando tiene una GUI, puede usar un programa de terminal para dibujar un bonito borde redimensionable, agregar barras de desplazamiento y formatear el texto, y así sucesivamente, para una sesión de terminal. A menudo, estos se llaman emuladores de terminal, y a veces pueden manejar múltiples sesiones a través de un concepto TAB. Un emulador de terminal a menudo inicia un Shell para permitirle trabajar interactivamente en una línea de comando.
Un TTY (es decir, una máquina de escribir T ele TY ) es un dispositivo especial que permite a las personas sordas, con dificultades auditivas o del habla utilizar el teléfono para comunicarse, permitiéndoles escribir mensajes de texto. Se requiere un TTY en ambos extremos de la conversación para comunicarse.
O
TTY es un terminal que se usa para escribir mensajes de texto.
Cáscara : el protector externo que cubre parte de una semilla, es decir, el grano.
O
marco o estructura exterior a la parte central o esencial de un sistema.
Consola significa el teclado y el monitor físicamente adjuntos a una computadora.
Ya hay dos excelentes respuestas, pero me gustaría agregar información sobre la frase "terminal virtual" . En general, significa algo que proporciona la apariencia / funcionalidad de un terminal, i. mi. un emulador de terminal en sentido amplio. Pero en los primeros días de Linux (1994–95) fue utilizado como sinónimo de "consola virtual" (varias interfaces de usuario no relacionadas) por algunos desarrolladores. Este uso persiste en la documentación; dos términos diferentes fueron (y son) usados para referirse a tty1, tty2 ... cositas. Hoy en día (desde ≈ 1996) "terminal virtual" también puede referirse a emuladores de terminal basados en pty .
Linux vt
(el controlador de la consola del sistema en modo texto) fue la primera pieza de su núcleo. Inicialmente se usó para la conexión a mainframes y, en este sentido, es un "terminal virtual", de ahí su nombre. El código que controla las consolas virtuales también residevt.c
. Los ingenieros de kernel de Linux usan constantemente la palabra "consolas" para denotar tty1, tty2 ... y usan el prefijo "vc_" para ellos. Por ejemplo, hay una vc_allocate
función. Por otro lado, los desarrolladores de herramientas de espacio de usuario como kbd
y console-tools
utilizaron "consola virtual" (VC) y "terminal virtual" (VT) indistintamente. Ī̲ contactó a Andries E. Brouwery le pidió que aclarara la terminología utilizada por los primeros desarrolladores (1994–95). Andries amablemente proporcionó algunas respuestas. Afirma que VT y VC son abreviaturas sinónimos e "indivisibles". -> En general, una consola virtual es un terminal virtual, pero lo contrario no es cierto. Esos "terminales virtuales" que no son consolas virtuales son, de hecho, pseudoterminales (como afirma Andries, estos no son VT ). A diferencia de las consolas virtuales, donde el núcleo proporciona la funcionalidad de terminal para una aplicación de consola, los pseudoterminales usan "dispositivos" PTY para organizar la comunicación entre las aplicaciones de consola y el programa de creación de terminales que se ejecuta en el espacio de usuario . Ejemplos son emuladores de terminal basados en X ysshd
, que asigna una pseudotty para cada sesión de inicio de sesión. Una pseudotty puede no llamarse "consola", es un error.
Terminal = Una interfaz que proporciona una pantalla para la salida y un teclado para la entrada a una sesión de shell.
Shell = Intérprete que ejecuta comandos escritos como una cadena
Consola: en realidad, dos tipos de consola que utilizamos
Consola física = La pantalla de hardware y el teclado utilizados para interactuar con un sistema.
Consola virtual = Una de las múltiples consolas lógicas que pueden admitir una sesión de inicio de sesión independiente.
tty (teletipo, es decir, terminal). = Un terminal es básicamente un dispositivo de interfaz de usuario que usa texto para input y output.message.
Necesitas sumergirte en la historia.
Había dispositivos tipo máquina de escribir con papel y teclado. Se llamaron teletipos (que significa "escribir de forma remota", ya que "tele" significa "remoto") o ttys para abreviar. En los años 70 fueron obsoletos por dispositivos con monitor CRT llamados ttys de vidrio .
Cualquier computadora necesita alguna forma de informar su estado y errores (y, probablemente, aceptar comandos). Se realiza a través de una consola que casi siempre está conectada directamente a la computadora. Por lo tanto, hay dos significados para la consola : algo que se usa para informar el estado y algo que está conectado directamente.
UNIX es un sistema interactivo: varios usuarios pueden conectarse a él e iniciar aplicaciones. Las primeras computadoras usaron teletipos ( tty ) para eso: cada usuario tenía un teletipo conectado a la máquina con una conexión de línea serial. Tal teletipo se llama terminal . UNIX también obtuvo un subsistema especial para manejar "usuarios sentados detrás de terminales", que también se llama tty porque los primeros terminales eran teletipos. Cada proceso podría estar conectado a tty en Unix. Eso significa que hay un usuario en algún lugar cerca de la terminal. Ver http://www.linusakesson.net/programming/tty/ para más información.
Los usuarios necesitan alguna forma de decirle al kernel que ejecute la aplicación. Para ello se utiliza shell (sh, bash, csh, ksh, etc.). shell se ejecuta en tty , acepta comandos del usuario y le pide al kernel que ejecute alguna aplicación.
Pero los terminales no siempre están físicamente conectados a la máquina. Puede haber alguna aplicación que "emule" el terminal aceptando pulsaciones de teclas del usuario y enviándolas a alguna parte (xterm y ssh son buenos ejemplos). Hay una API en Kernel llamada pseudo terminal para eso. Por lo tanto, su tty realmente puede estar conectado a alguna aplicación en lugar de un terminal real. Xterm usa X11 para mostrar texto y ssh usa una conexión de red para ello.
La PC de IBM tiene teclado y tarjeta de video (a veces también se les llama consola ). Linux puede hacer cosas diferentes con él:
También puede dejar de emular el terminal en la consola y dárselo a alguna aplicación. La aplicación puede cambiar su modo de video y usarlo exclusivamente (X11 o svgalib pueden hacer eso).
Entonces, aquí hay significados modernos:
/dev/console
) o el teclado físico y la pantalla de video conectados a la computadora.Aquí está la respuesta corta:
Kernel : la parte más interna de cualquier sistema operativo moderno que habla directamente con el hardware real.
Shell : envoltorio alrededor del núcleo real. Cada vez que ejecutamos el comando, en realidad hablamos con shell, que a su vez invoca las instrucciones apropiadas del kernel. Aparte de esto, el shell es capaz de realizar algunas otras cosas, como encontrar el programa apropiado mientras tiene comandos, algunos nombres cortos de archivos, comandos de tuberías, etc.
Terminal : en la era de la informática anterior, las computadoras (conocidas como Mainframe) eran gigantes. Por lo tanto, era fácil tener una sola unidad de procesamiento y conectarla desde muchos lugares. Terminal es el hardware real con teclado y dispositivos de salida conectados a la unidad central.
Consola : tipo especial de terminal que se conecta directamente a Mainframe para la administración del sistema operativo.
tty : TeleTypewriter se utiliza para enviar y recibir datos desde y hacia Mainframe. Utilizado antes de que las Terminales de video estuvieran disponibles. Pero, convencionalmente, todavía ha sido nombrado como tty. Incluso el comandantestty
La respuesta larga y detallada está aquí: Terminal, Consola, Shell, Kernel, Comandos: diferentes partes de una computadora
root
cuenta a sudo
través de un inicio de sesión de consola. Las consolas a menudo tienen un lugar especial en cuanto a privilegios, ya que alguien que tiene acceso a ellas necesariamente tiene acceso físico a la computadora con la que se comunican. También son el método de acceso de último recurso. Si el sistema operativo está en un estado parcialmente roto (como el controlador de Ethernet está roto), aún puede acceder a la consola. Es el único dispositivo de interfaz humana que SIEMPRE debe estar disponible, sin importar en qué estado se encuentre el sistema.
Además de la respuesta aceptada y el artículo desmitificado de TTY , realmente me encantó leer estos dos artículos:
Este está basado en NetBSD.
En la edad de piedra de Unix, los sistemas informáticos consistían en un mainframe, una gran caja de luces parpadeantes que tenía memoria, almacenamiento masivo y unidades informáticas, y que ejecutaban procesos iniciados por usuarios u operadores. Como el hardware era muy costoso, los sistemas se utilizaron como verdaderos sistemas multiusuario, con muchas personas interactuando con el sistema al mismo tiempo. Lo que generalmente no tenía, a diferencia de las estaciones de trabajo Unix de hoy, era un monitor fijo y un teclado. En cambio, la emisión de comandos a la máquina y la recuperación de la salida se realizó a través de líneas seriales, utilizando primero los teletipos y luego los terminales CRT (tubo de rayos catódicos). Los teletipos, de ahí provienen los "ttys" en Unix, son máquinas de escribir electrónicas que envían teclas presionadas a través de la línea serial al host,
Este está basado en Linux.
Los terminales son dispositivos que proporcionan capacidades mejoradas de entrada / salida más allá de lo que se podría lograr solo con archivos, tuberías y enchufes normales. Estas características están diseñadas para facilitar que los humanos interactúen con las computadoras, y son inútiles para los programas que intentan comunicarse entre sí.
Déjame echar un vistazo a esto ... Usaré Unix y Linux más o menos como sinónimos. Si me refiero a algo histórico que precede a la existencia de Linux, generalmente escribiré "Unix", y si estoy hablando de algo más reciente, o algo específico al sabor Linux de Unix, generalmente escribiré "Linux ".
Lo único en su lista que es un concepto discreto que no se superpone con los demás es el 'shell'. El shell es un programa cuyo propósito es comunicarse con un usuario y llevar a cabo operaciones del sistema operativo en su nombre.
Los shells más comunes usan una técnica llamada 'línea de comando' que consiste en enviar al usuario algún tipo de mensaje, esperar a que el usuario escriba un comando de texto y luego ejecutar ese comando. Pero hay shells basados en menús, e incluso shells gráficos (como el Explorador de archivos de Windows), aunque ninguna persona de Unix que se respete nunca lo llamaría un 'shell'.
En Unix, si alguien llama a algo "shell", seguramente significará alguna forma de interfaz de línea de comandos como acabo de describir. Y es muy extraño en el mundo de Unix referirse a algo como un 'shell' si no se está comunicando a un usuario que usa el modelo tty que describo más adelante.
Esto es confuso porque puede referirse a algunos tipos diferentes de cosas.
En Linux, hay un tipo de dispositivo llamado 'tty'. Es un dispositivo abstracto que se espera que se use para la comunicación bidireccional con algo que sea un usuario o que esté recibiendo información de un usuario de alguna manera. A veces, ese dispositivo abstracto puede corresponder directamente a algún dispositivo físico. A veces puede ser un programa que le presenta a alguien una ventana en la que aparece la comunicación y en la que el usuario puede escribir.
Pero, la razón por la que existe este dispositivo abstracto y la razón por la que se llama 'tty' es que 'tty' es la abreviatura de 'teletipo', que era un dispositivo físico real que tenía una impresora impresa en papel combinada con un teclado. El modelo que el dispositivo abstracto 'tty' presenta a los programas que lo utilizan es básicamente que hay un teletipo en el otro extremo. Le envías caracteres y esos caracteres aparecen en el teletipo. Cuando lees caracteres, esos caracteres representan teclas que se escribieron en un teclado.
Los viejos ttys basados en impresoras de papel fueron rápidamente reemplazados por ttys de video. En esos, por supuesto, no hay rollo de papel. Y, de hecho, es posible sobrescribir cualquier carácter en la pantalla. Pero, en lugar de presentar algún tipo de interfaz de "pantalla" abstracta a los programas, se espera que los programas envíen secuencias especiales de caracteres llamados secuencias de escape que realizan una variedad de tareas. Por lo general, hay una cosa abstracta llamada 'cursor' que se puede mover por la pantalla, y cualquier carácter enviado reemplazará lo que esté en el cursor y el cursor avanzará un carácter más adelante. A menudo también puede cambiar el color de un personaje que está a punto de imprimirse con secuencias de escape.
Hay 'ttys de vidrio' que no siguen este modelo y, en consecuencia, se manejan mal en el mundo de Unix. La familia de terminales de video IBM 3270 pertenece a esta categoría.
Lo que la gente de Linux / Unix suele llamar una 'ventana de shell' es una emulación de un cristal utilizando una interfaz gráfica de usuario. Internamente, los programas que se ejecutan dentro de una ventana de shell están hablando con un dispositivo tty virtual que a veces se denomina pseudo-tty o pseudo-terminal (también conocido como pty).
Una terminal es solo un lugar donde se supone que la computadora y los humanos deben interactuar. Los terminales pueden ser completamente gráficos y no seguir el modelo tty de ninguna manera, a pesar de que un programa puede usar sus capacidades para emular esto. Todos los ttys físicos reales (de vidrio o de otro tipo) son terminales.
Una consola es un tipo especial de terminal que generalmente se supone que está conectado de manera segura y directa al hardware en el que se ejecuta el sistema operativo.
En Linux, la consola se virtualiza de forma pequeña, lo que le permite usar una pulsación de tecla especial para cambiar entre las consolas virtuales. Pero esta virtualización se realiza con una pieza real de hardware por software en el núcleo.
Hay formas de usar Linux a través de lo que se llama una 'consola serie', que es una consola que está conectada a la computadora a través de un puerto serie como un puerto USB (o, en algunas computadoras muy pequeñas y / o muy viejas, un puerto RS-232 de algún tipo) y sigue el antiguo modelo de teletipo de una manera bastante estricta.
Una vez más, la idea es que esta consola esté conectada de manera física directa a la computadora en lugar de a través de algún tipo de red que pueda permitir que cualquiera se conecte.