Un emulador de terminal o emulador de consola es un programa informático que simula el funcionamiento de un terminal de computadora en cualquier dispositivo de visualización. Normalmente suele estar accesible pulsando CTRL + ALT + T
simultáneamente. Un emulador de terminal dentro de una interfaz gráfica de usuario es comúnmente conocida como una ventana de terminal.
Los emuladores de terminal incorporan características tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir secuencias de instrucciones por lotes o scripts. Uno de los lenguajes o intérpretes más conocidos, es el Bourne Shell, el cual fue el intérprete usado en las primeras versiones de Unix y se convirtió en un estándar de facto.[1]
Al ingresar las órdenes en el emulador, un intérprete de comandos analiza la secuencia de caracteres ingresada y, si la sintaxis de la orden es correcta, la ejecuta, recurriendo para ello a las funciones que ofrece el sistema operativo o el programa que representa, bien sea un gestor de banco de datos, una sesión de FTP, etc. La respuesta al usuario se representa en el monitor; es una forma de trabajo interactiva, es decir, usuario y máquina se comunican en forma sucesiva.
Desde sus inicios, los ordenadores contaban con pequeños terminales de texto para interactuar con sus usuarios. Un terminal se compone únicamente de un teclado y una pantalla capaz de mostrar texto. Estas terminales se conectaban a la computadora a través de una interfaz serie (más o menos, un simple cable). Un ordenador podía tener conectados varios terminales simultáneamente.
Con la proliferación de los miniordenadores, una misma persona estaba obligada a manejar varios terminales sobre su mesa, uno por cada ordenador. Dado que estos ordenadores ya disponían de redes de comunicaciones, se hizo patente la idoneidad de poder controlar varios ordenadores desde un mismo terminal. Para hacer esto posible, se escribió un programa emulador que básicamente, permite a un ordenador simular ser un terminal de otro ordenador. Así nacieron los primeros emuladores de terminal para Unix.
La utilidad del emulador de terminal se hizo aún mayor con la llegada de los ordenadores personales a las empresas. Los trabajadores ahora tenían un ordenador de escritorio y un terminal sobre su mesa. Esto no solamente significaba un incordio para el trabajador. También suponía un sobrecoste para la empresa ya que tenía que mantener dos equipos distintos, la red de comunicaciones y las conexiones serie de los terminales. El uso de un emulador de terminal permitía eliminar el viejo terminal físico así como todos los cables serie, dando valor añadido a la red de comunicaciones. Además el coste de la licencia de un emulador de terminal es sensiblemente inferior al coste de un terminal físico.
Hoy día los emuladores de terminal para ordenador personal siguen en uso en aquellas organizaciones que mantienen sistemas centrales (como bancos y Administraciones Públicas), así como en la mayoría de sistemas operativos modernos, de los cuales cabe destacar GNU/Linux, ya que los usuarios avanzados de este último suelen usar los emuladores de terminal para la mayoría de tareas de administración del sistema.
Los emuladores de terminal tienen su evolución en los modernos escritorios remotos.
Todos los emuladores de terminal son muy simples, se limitan a enviar y recibir caracteres de texto a través de una red de comunicaciones. Los caracteres enviados se corresponden con pulsaciones en el teclado y los caracteres recibidos corresponden con la pantalla visualizada. Lo único que los diferencia es el tipo de terminal físico emulado. Aunque existe una gran variedad de terminales (tanto físicos como emulados), casi todos ellos son variaciones de dos modelos básicos:
La diferencia entre terminales está en el juego de caracteres empleados, los códigos de control que emplean (por ejemplo, para borrar la pantalla) y los diferentes códigos de carácter que corresponden a cada tecla.
El emulador de terminal por excelencia es Telnet. Se trata de una aplicación estándar de la pila de protocolos TCP/IP. Sin embargo, Telnet es un emulador de "mínimo común denominador", es decir, excesivamente simple.
En los ordenadores Unix el emulador de terminal por defecto es Term, que tiene su versión para escritorio gráfico en xterm. Este tiene algunas mejoras como la posibilidad de visualizar texto en color mediante ciertos códigos de control.
En el campo de los ordenadores personales destacan PuTTY y ssh. No obstante, estos dejan fuera los terminales 3270. Los productos comerciales más extendidos son Extra! y Reflection de la compañía AttachmateWRQ.
Con la proliferación de las tecnologías Web, algunas compañías como Jacada y AttatchmateWRQ tratan de comercializar una nueva generación de emuladores que se ejecutan en el navegador Web, bien directamente (mediante un applet), bien mediante un servidor intermedio (una aplicación Web). Además, AttachmateWRQ ofrece soluciones para la integración de aplicaciones web mediante su solución VERASTREAM . Esta solución, por otro lado, permite modernizar la aplicación legacy (residente en el host) y darle un aspecto web.
Pueden dividirse en cuatro categorías: tipo Bourne, tipo consola C, no tradicional e histórica.
Un shell lee archivos de configuración en múltiples circunstancias bajo diferentes dependencias de la shell. Esta tabla muestra los archivos de configuración de las shells más populares:
sh | ksh | csh | tcsh | bash | zsh | |
---|---|---|---|---|---|---|
/etc/.login
|
no | no | login | login | no | no |
/etc/csh.cshrc
|
no | no | no | yes | no | no |
/etc/csh.login
|
no | no | no | login | no | no |
~/.tcshrc
|
no | no | no | yes | no | no |
~/.cshrc
|
no | no | yes | yes | no | no |
~/.login
|
no | no | login | login | no | no |
~/.logout
|
no | no | login | login | no | no |
/etc/profile
|
login | login | no | no | i.login | no |
~/.profile
|
login | login | no | no | login | no |
~/.bash_profile
|
no | no | no | no | login | no |
~/.bash_login
|
no | no | no | no | login | no |
~/.bashrc
|
no | no | no | no | n/login | no |
/etc/zshenv
|
no | no | no | no | no | yes |
/etc/zprofile
|
no | no | no | no | no | login |
/etc/zshrc
|
no | no | no | no | no | int. |
/etc/zlogin
|
no | no | no | no | no | login |
/etc/zlogout
|
no | no | no | no | no | login |
~/.zshenv
|
no | no | no | no | no | yes |
~/.zprofile
|
no | no | no | no | no | login |
~/.zshrc
|
no | no | no | no | no | int. |
~/.zlogin
|
no | no | no | no | no | login |
~/.zlogout
|
no | no | no | no | no | login |
Explicación:
Dentro del conjunto de sistemas operativos Microsoft Windows, el análogo son los programas command.com, o cmd.exe para sistemas operativos basados en Windows NT, y Windows PowerShell introducido con Windows Server 2008.
Pocos términos usados en computación han sufrido tantos avatares a lo largo del progreso técnico tan intensamente como el de intérprete de comandos (tales como consola, CLI, TUI, TTY, terminal o shell).
Históricamente, la consola era un terminal de datos (es decir, un dispositivo físico), pero como dichos aparatos ya casi no existen, la palabra pasó a utilizarse como sinónimo de "pantalla del CLI". La expresión consola se utiliza más comúnmente en juegos de PC para referirse a la ventana donde se pueden ingresar comandos.
Por otro lado, un emulador de terminal (o TTY) es un programa que permite imitar aquellos viejos terminales, para acceder a diversos servicios aún vigentes bajo ese tipo de formato (como Telnet). Ejemplos de estos programas son: HyperTerminal, Xterm, PuTTY y SSH.
Con el desarrollo de los GUI, los sistemas de ventanas proveen alguna clase de emulación para el modo texto, para ejecutar correctamente programas que utilizan TUI (como el Midnight Commander de Linux). De esta forma, tanto los shells de Unixes (bajo X) como los antiguos programas de DOS (bajo MS Windows) son ejecutados con este emulador del modo texto. Y, lo que es aún más, algunos importantes programas (como Bash), actúan también como emuladores de terminal. De esta manera, las expresiones emulador de texto, consola y terminal acaban usándose en ocasiones como sinónimos.
Es común mezclar las tres cosas para referirse a un solo concepto: el sitio donde se puede usar la interfaz de líneas de comando.
Por ejemplo, si conectamos un teclado y un monitor a un PC y lo hacemos arrancar con GNU/Linux en modo texto, la mayoría de los usuarios dirá que tiene una shell. Si desde esa shell se arranca el modo gráfico KDE del mismo PC, la pantalla se iluminará con trasfondos y botones. Si se abre una ventana con el programa xterm, se le llamará consola. Si en esa consola ejecutamos SSH y nos comunicamos a través de la red con un computador remoto, diremos que tenemos un terminal abierto. En los tres casos trabajaremos con una shell, digamos Bash, y las diferencias de funcionalidad son mínimas.