Ya que en el blog de Linux For All Site (LinuxerOS) y en ArchlinuxLatinoamerica vimos que se escribió en reiteradas ocasiones terminal, tty, shell, etc. Quiero explicar también que significan con un poco de detalle así queda claro y no hay oportunidad de equivocaciones. Espero que les sirva.

La llamada consola, terminal y tty están estrechamente relacionadas. Originalmente se refieren a un equipo a través del cuál se puede interactuar con una computadora. En los primeros días del sistema Unix significa un dispositivo estilo “teleimpresor” que se parece, bah parecía a una máquina de escribir y a veces llamada teletipo o “tty” (si, TTY) en taquigrafía. El nombre “terminal” vino desde el punto de vista electrónico y el nombre “consola” desde el punto de vista de los muebles. Porque? Y porque desde muy temprano en la historia Unix los teclados y pantallas electrónicas se convirtieron en norma para los terminales. Increíble no?

En la terminología de Unix, un tty es un tipo particular de archivo de dispositivo que implementa una cantidad de comandos proporcionados por el hardware de nuestro equipo. Por ejemplo, con la entrada que proviene del teclado y la salida que va a una pantalla en modo texto o con una entrada/salida que se transmiten a través de una linea. También otros TTYs llamados, en ocasiones, pseudo-tty se proporcionan (a través de una delgada capa de kernel) mediante programas llamados emuladores de terminal, como xterm, termite, gnome-terminal, konsole (que se ejecutan dentro de las X o como prefiero decir, dentro del entorno gráfico).

Screen (proporciona una capa de aislamiento entre un programa y otro terminal, se entiende?) y SSH que es lo que conecta un terminal en una máquina con programas en una máquina con otros programas. Ésta nos brinda diferentes interacciones de terminal de scripting.

La palabra terminal también pude tener un significado más tracicional de un dispositivo a través de la cuál un usuario interactúa con una computadora que generalmente es con un teclado y una pantallla/monitor.

Por ejemplo un terminal X es un tipo de cliente liviano, una computadora de propósito especial cuyo objetivo es manejar un teclado, la misma pantalla, el mouse y normalmente otros tipos de dispositivos o periféricos que interaccionan con nosotros; con las aplicaciones/programas reales.

Una consola es generalmente una terminal en sentido físico que es la principal conectada directamente a una máquina. La consola aparece para el sistema operativo como una tty (Tener en cuenta el ejemplo del inicio de instalación de Arch Linux o Gentoo). En algunos sistemas como GNU/Linux, BSD, etc. la consola aparece como varias tty (a través de combinaciones de teclas por ejemplo e ctrl+alt+F2,F3,F4. etc.) sólo para confundir las cosas, el nombre dado a cada tty particular se puede llamar consola, consola virtual, terminal virtual y otras variantes que seguramente ya conocemos o podemos definir como “mal nombradas”.

Una shell es la interfaz principal que nosotros podemos visualizar cuando iniciamos una sesión. El objetivo principal es iniciar varios programas (ps, grep, navegador, entorno gráfico, etc.)

En los círculos de Unix, shell se a especializado para referirse a una shell de línea de comandos, centrado en ingresar el nombre de la aplicación que deseamos incitar seguido de los nombres de órdenes o archivos u otros objetos sobre los que vamos a actuar o querer realizar alguna acción (renombrar, mover, eliminar, ejecutar, etc.).

Hay muchas diferencias de Unix, pero las más populares para un uso interactivo incluyen lo que es la shell Bash (el valor predeterminado en la mayoría de las instalación de GNU/Linux, Unix, etc.), zsh que hace hincapié en la potencia y la personalización (colores, atajos de teclado, etc.) y fish que hace hincapié en la simplicidad.

Las shells de línea de comando incluyen construcciones de control de flujo para combinar comandos de diferentes tipos. Además de escribir comandos de un estilo interactivo, también podemos escribir scripts y diferentes tipos de sintaxis basadas en el Shell Bourne.

Cuando se habla de “programación de shell, en shell” casi siempre implica que es un shell de estilo Bourne.

Algunos shells que se usan normalmente para crear scripts, pero que carecen de funciones interactivas muy avanzadas incluyen otras como el Shell Korn (ksh) y otras variantes. Casi cualquier sistema estilo linux/unix, tiene un shell bournce instalado de manera por default o defecto.

En la misma administración en los sistemas, los shells son programas que usamos inmediatamente iniciamos sesión (ingresamos el usuario y contraseña que configuramos previamente). Las cuentas de usuario normales tienen un shell, pero os usuarios con acceso root pueden tener un shell diferente que nos permite realizar otro tipo de tareas.

Bueno básicamente ésta fue una explicación sobre lo que usamos, tenemos a disposición y podemos configurar, como siempre, a nuestro antojo. Tengan presente que por favor deben utilizar la orden “man” seguido de la shell para obtener más ayuda para interiorizarnos. Personalmente y actualmente uso la shell Bash y ZSH que me parecen excelentes y muy simples de personalizar.

Espero que les haya servido la información, recuerden compartir la entrada así sigo creciendo.

Abrazo de gol mundialista!