Терминалы «изменяемого размера» как таковые являются результатом NAWS ( Negotiate About Window Size
из RFC 1073 Опция размера окна Telnet ).
Если вы подключены напрямую к компьютеру через последовательный порт, согласование не требуется, и компьютер не знает напрямую о размере экрана вашего терминала.
Если терминал может согласовать размер, компьютер отправит SIGWINCH
приложениям, работающим в терминале, указание им обновить свое представление о размере экрана.
Когда компьютер не знает размера экрана, он обычно устанавливает размер, показанный stty -a
(строки и столбцы), равным нулю. Для интерактивного использования это немного недружелюбно, и некоторые системы используют переменные окружения LINES
и COLUMNS
для помощи. Присвоенные значения могут быть получены из описания терминала; чаще они просто жестко закодированы. Соглашение для этих переменных требует, чтобы они вступили в силу, если они явно не подавлены, например, в use_env
функции приложения curses . С положительной стороны, эти переменные могут быть полезны, когда нет надежной информации. С другой стороны, нет удобного метода для изменения этих переменных.
resize
Программа (утилита снабжена xterm
) можно использовать VT100-стиль отчета позиции курсора последовательность для определения размера экрана. Это может быть запущено из командной строки; (опять же) нет удобного способа сделать это автоматически. Как побочный эффект, resize
обновляет информацию о строках / столбцах, видимых stty
. Его использование для обеспечения обновленных переменных сред в основном полезно для таких случаев, как это, где LINES
и COLUMNS
будет установлены, и должны быть обновлены.
[[ $(tty) == /dev/ttyS0 ]] && trap res2 DEBUG
к одному из конфигов профиля оболочки (например,/etc/profile
,~/.bash_profile
). Это заставит его запускаться после каждой отдельной команды (что было бы хорошо, если вы изменяете размеры окон / панелей с помощью screen / tmux / Terminal-Emulator).