Терминалы «изменяемого размера» как таковые являются результатом 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).