Discusión:Emulador de terminal

message: Acepto el tema de la autoreferencia. Pero lo segundo no. Precisamento yo hablo de lo que es un emulador, de hecho yo ahora mismo estoy escribiendo un terminal de emulador, por lo que se de lo que hablo. Un terminal es un equipo hardware que permite le interaccion mediante caracteres con un usuario, mientras que en un emulador lo que hace es convertir un ordenador en un terminal (o simula un terminal para otros procesos del mismo ordenador), de hecho el propio kernel de linux comenzo siendo tan solo un emulador de terminal (https://belenus.unirioja.es/~pamartg/Historia.html), y Linus Torvalds lo usaba simplemente para llamar a su universidad y poder trabajar alli (si quieres ver el codigo del kernel sobre esto los ficheros son drivers/char/vt.c y drivers/char/keyboard.c).
Un shell es tan solo un programa que lee del terminal, de hecho es el session leader de la session ubicada en el terminal, ya sea terminal real o emulado. En un sistena unix para poder simular un terminal es necesario usar las PTY o pseudo ttys, las cuales crean un puerto serie virtual de tal manera que bash por ejemplo no se de cuenta de que no esta en un terminal real.
Por ejemplo xterm que si es un emulador de terminal lee los keycodes del terminal donde se esta ejecutando el servidor x (en linux suele ser una virtual terminal, es decir el emulador de terminal embedido dentro del propio kernel) y tras procesarlos en base a la configuracion del terminal que esta emulando escibe los valores apropiados en la pty para que al leerlo el proceso correspondiente (bash, telnet, ssh o quien sea), crea que lee la entrada de teclado proveniente del terminal que se esta emulando, y por otro lado lee de la pty para ver lo que quiere escribir el proceso en el terminal y producir la salida grafica correspondiente en la ventana de X.
Sin embargo telnet o ssh no hacen nada de eso, tan solo leen y escriben de su terminal (ya sea real o emulado), es decir necesitan de un terminal para ejecutarse y no crean ningun terminal emulado ni pty ni nada.
Si quieres leer sobre todos estos temas te recomiendo http://tldp.org/HOWTO/Text-Terminal-HOWTO.html y en especial la seccion http://tldp.org/HOWTO/Text-Terminal-HOWTO-10.html#term_emulation, donde se explica en que consiste la emulacion de terminal.
En cualquier caso lo que si se podria aceptar como emulacion de terminal son los servidores de ssh y telnet (sshd y telnetd) ya que crean una pty de tal manera que bash no se da cuenta que esta interactuando con un usuario remoto, pero esa emulacion es en lado del servidor, no es lo que ves tu cuando haces un telnet o un ssh, ya que como explique antes estos programas tan solo establecen una conexion de red y no emulan ningun terminal, tan solo escriben y leen de una. Por otro lado estan programas como putty que son una mezcla de ambos conceptos, ya que por un lado tienen un emulador de terminal (putty incluso te permite emular varios modelos distintos) y por otro lado es un programa de comunicaciones que realizan conexiones telnet o ssh.
Lo que nunca, nunca, nunca puede ser considerado como un emulador de terminal es un shell, ya que tan solo es un programa que lee de un terminal, es decir necesita un terminal donde ejecutarse (a menos que lo ejecutes en modo no interactivo, de forma que no puede interactuar con el usuario y por tanto no necesita el terminal)
Otra buena referencia donde se explica muy bien como configurar el emulador de terminal que lleva el kernel y que es donde se ejecutan programas como el shell es http://www.comptechdoc.org/os/linux/usersguide/linux_ugterminal.html. En esta pagina se usa de manera indiferente las palabras consola y terminal, ya que por defecto la consola en un sistema linux es una de las terminales virtuales del kernel (o bien la que esta activa, es configurable).
Por si aun no te he convencido, te resalto el tema de la variable de entorno TERM en los sistemas UNIX, la cual sirve para indicarle al sistema el tipo de terminal sobre el que se esta ejecutando (de hecho se usa como indice para mirar en /usr/share/terminfo/ y extraer las sequencias de escape necesarias para trabajar con el emulador), ya que bash no sabe nada del terminal ni emula nada de nada. Si lo creer conveniente te recomiendo que cambies esa variable (por ejemplo en una ventana xterm pon el valor vt52 con el comando "export TERM=vt52" y veras lo que ocurre, ya que todos los programas (incluidos bash, telnet o ssh) intentaran escribir en el terminal con las secuencias del vt52, las cuales no son entendidas por xterm.
Otro tema muy diferente es que gente sin los conocimientos necesarios llame terminal a todo lo que sea una linea de comandos, lo cual es increiblemente incorrecto, y como dice el articulo al principio "Este artículo trata sobre emulación de hardware. Para otros usos de este término, véase Línea de comandos"
K0gaMSX (discusión) 17:16 8 abr 2011 (UTC)
replies: text: ¿Qué parte del artículo es exactamente la que está mal? Vitamine (discusión) 18:40 8 abr 2011 (UTC)
thread_title:  Sobre correccion de emulador de terminal 

message: Al inicio del articulo se dice que se va a hablar únicamente de un emulador de hardware y después se comienza a hablar de shells e interpretes de comando de línea de texto.   Creo que el articulo debe ser limpiado (por alguien que sepa).  Ademas debe incorporarse aunque mas ni sea una referencia a los emuladores de terminal gráfica que siguen siendo emuladores de terminal.
Un emulador de terminal es un programa que emula una terminal de trabajo boba: pantalla, teclado y quizás mouse (si es gráfica).  Que luego haga uso de esos dispositivos de nuestra PC es otra cosa.
Un intérprete de comandos es un programa (que puede correr en un emulador de terminal o no) que toma ordenes de texto del usuario, las analiza y ejecuta.  No tiene nada que ver sobre lo que esté corriendo.
Debería ingresar en revisión inmediata este artículo. --Guilloip (discusión) 05:25 14 ago 2012 (UTC)
thread_title: Error Conceptual: se confunde Emulador de Terminal con Intérprete de Comandos de texto