Термінали, що змінюються, є такими результатами NAWS ( Negotiate About Window Size
від параметра розміру вікна RFC 1073 Telnet ).
Якщо ви підключені безпосередньо до комп'ютера за допомогою послідовного порту, немає переговорів, і комп'ютер не має прямих знань щодо розміру екрана вашого терміналу.
Якщо термінал може домовитись про розмір, комп'ютер буде надсилати SIGWINCH
додаткам, що працюють в терміналі, кажучи їм оновити своє уявлення про розмір екрану.
Коли комп'ютер не знає розмір екрана, він зазвичай встановлює розмір, показаний stty -a
(рядки та стовпці), до нуля. Для інтерактивного використання це трохи недружелюбно, і деякі системи використовують змінні середовища LINES
та COLUMNS
допомагають. Призначені значення можуть бути отримані з опису терміналу; частіше вони просто жорсткі. Конвенція для цих змінних вимагає, щоб вони набирали чинності, якщо явно не придушено, наприклад, у use_env
функціях додатків прокляття . З позитивного боку, ці змінні можуть бути корисними, коли немає достовірної інформації. З негативної сторони, немає зручного методу зміни цих змінних.
resize
Програма (утиліта забезпечена xterm
) можна використовувати VT100-стиль звіту позиції курсора послідовність для визначення розміру екрана. Це можна запустити з командного рядка; немає (знову ж таки) немає зручного способу зробити це автоматично. В якості побічного ефекту resize
оновлює інформацію про рядки / стовпці, які бачать stty
. Його використання для забезпечення оновлених змінних середовищ в основному корисно для таких випадків, як це, де LINES
і COLUMNS
буде встановлено, і повинні бути оновлені.
[[ $(tty) == /dev/ttyS0 ]] && trap res2 DEBUG
до одного з конфігов профілю оболонки (наприклад,/etc/profile
,~/.bash_profile
). Це змусить його запускатись після кожної команди (що було б добре, якщо ви змінюєте розмір вікон / панелей за допомогою екрана / tmux / terminal-емулятора).