Các thiết bị đầu cuối "có thể thay đổi kích thước" như vậy là kết quả của NAWS ( Negotiate About Window Size
từ Tùy chọn Kích thước Cửa sổ Telnet của RFC 1073 ).
Nếu bạn được kết nối trực tiếp với máy tính bằng cổng nối tiếp, sẽ không có sự thương lượng nào liên quan và máy tính không có kiến thức trực tiếp về kích thước màn hình của thiết bị đầu cuối của bạn.
Nếu một thiết bị đầu cuối có thể thương lượng kích thước, máy tính sẽ gửi SIGWINCH
đến các ứng dụng đang chạy trong thiết bị đầu cuối, bảo họ cập nhật khái niệm về kích thước màn hình.
Khi máy tính không biết kích thước màn hình, nó thường đặt kích thước được hiển thị bởi stty -a
(hàng và cột) thành không. Để sử dụng tương tác, đây là một chút không thân thiện, và một số hệ thống sử dụng các biến môi trường LINES
và COLUMNS
để giúp đỡ. Các giá trị được gán có thể được lấy từ mô tả đầu cuối; thường xuyên hơn họ chỉ đơn giản là mã hóa cứng. Quy ước cho các biến này yêu cầu chúng có hiệu lực trừ khi bị triệt tiêu rõ ràng, ví dụ, trong use_env
chức năng ứng dụng chửi rủa . Về mặt tích cực, những biến đó có thể hữu ích khi không có thông tin đáng tin cậy. Về mặt tiêu cực, không có phương pháp thuận tiện để thay đổi các biến đó.
Các resize
chương trình (một tiện ích được cung cấp với xterm
) có thể sử dụng vt100 kiểu dãy thoát báo cáo vị trí con trỏ để xác định kích thước màn hình. Điều này có thể được chạy từ dòng lệnh; (một lần nữa) không có cách thuận tiện để làm điều đó tự động. Là một hiệu ứng phụ, resize
cập nhật thông tin trên các hàng / cột được nhìn thấy bởi stty
. Việc sử dụng nó để cung cấp các biến môi trường cập nhật chủ yếu hữu ích cho các trường hợp như thế này, ở đâu LINES
và COLUMNS
được đặt và nên được cập nhật.
[[ $(tty) == /dev/ttyS0 ]] && trap res2 DEBUG
vào một trong các cấu hình cấu hình shell (ví dụ/etc/profile
,,~/.bash_profile
). Điều này sẽ làm cho nó được chạy sau mỗi lệnh đơn (điều này sẽ chỉ là một điều tốt nếu bạn thay đổi kích thước cửa sổ / cửa sổ bằng màn hình / tmux / terminal-giả lập).