Los terminales "redimensionables" como tales son el resultado de NAWS ( Negotiate About Window Size
de la opción de tamaño de ventana Telnet RFC 1073 ).
Si está conectado directamente a la computadora mediante un puerto serie, no hay negociación involucrada y la computadora no tiene conocimiento directo del tamaño de pantalla de su terminal.
Si una terminal puede negociar el tamaño, la computadora enviará SIGWINCH
a las aplicaciones que se ejecutan en el terminal, diciéndoles que actualicen su noción del de la pantalla.
Cuando la computadora no conoce el tamaño de la pantalla, generalmente establece el tamaño mostrado por stty -a
(filas y columnas) en cero. Para uso interactivo, esto es un poco hostil, y algunos sistemas usan variables de entorno LINES
y COLUMNS
para ayudar. Los valores asignados pueden derivarse de la descripción del terminal; más a menudo son simplemente codificados. La convención para estas variables requiere que surtan efecto a menos que se supriman explícitamente, por ejemplo, en la use_env
función de aplicaciones de maldiciones . En el lado positivo, esas variables pueden ser útiles cuando no hay información confiable disponible. En el lado negativo, no existe un método conveniente para alterar esas variables.
El resize
programa (una utilidad provista con xterm
) puede usar la secuencia de escape del informe de posición del cursor estilo VT100 para determinar el tamaño de la pantalla. Esto se puede ejecutar desde la línea de comandos; (de nuevo) no hay una forma conveniente de hacerlo automáticamente. Como efecto secundario, resize
actualiza la información sobre las filas / columnas vistas por stty
. Su uso para proporcionar variables de entorno actualizadas es principalmente útil para casos como este, dónde LINES
y COLUMNS
se establecen, y debe actualizarse.
[[ $(tty) == /dev/ttyS0 ]] && trap res2 DEBUG
a una de las configuraciones de perfil de shell (por ejemplo/etc/profile
,~/.bash_profile
). Esto hará que se ejecute después de cada comando (lo que sería bueno si cambia el tamaño de ventanas / paneles con screen / tmux / terminal-emulator).