Ksh
xterm 調整大小導致外殼混亂
我正在使用反射 x,它使用 xterm 作為終端仿真器。如果我多次最大化和最小化視窗,當我嘗試訪問以前的命令時,文本會變得混亂。問題與此非常相似,但是,我使用的是 ksh shell 而不是 bash。那麼解決方案的 ksh 版本是什麼?謝謝!
在調整實際 xterm 視窗的大小時,我通常需要使用
resize
andreset
命令來清除/修復問題。要使用
resize
:$ eval `resize`
如果你自己執行
resize
,它會報告列和行的設置。要使用
reset
:$ reset
參考
該
reset
命令不會幫助清理調整大小。該
resize
命令可能會有所幫助,但有一個陷阱。有兩個主要案例resize
:
- 當系統無法判斷時告訴系統螢幕有多大,例如,通過不支持 NAWS(關於視窗大小的協商)的串列介面連接。這對於常見問題解答很有用。
- 修復以前使用
resize
. 這會產生錯誤報告。該
resize
程序最初是在基於 termcap 的系統很常見時編寫的。典型的 termcap 描述說明螢幕有多大,因為 1980 年代編寫的大多數 termcap 應用程序不包括詢問螢幕實際大小的系統呼叫。這種情況在 1980 年代後期開始發生變化,引入了SIGWINCH
信號和系統呼叫來獲取資訊。但是,由於這些遺留應用程序,建立了一個約定,即(預設情況下)如果設置了
LINES
和/或COLUMNS
變數,那麼這些將覆蓋 termcap 描述。到現在為止還挺好。
但是,某些應用程序(包括 shell,例如本質上是 termcap 應用程序的 bash)會比實際螢幕尺寸更關注這些
LINES
和COLUMNS
變數。如果您評估的輸出
resize
,您將設置這些變數。這似乎很好,直到(您可能會注意到)再次調整視窗大小時,跟隨螢幕大小更改的程序不再這樣做。沒問題,您只需重複您對
resize
.另一方面,如果您只是簡單地執行
resize
而不評估其輸出,它會更新系統的螢幕尺寸概念。進一步閱讀:
resize
-將環境和終端設置設置為目前 xterm 視窗大小tset
,reset
-終端初始化- use_env
LINES
,一個允許andCOLUMNS
被忽略的庫函式。- 處理 SIGWINCH(調整事件大小)