[問題] console 換行問題

作者: chiaohuang (chiao)   2021-02-10 16:52:53
大家好
小弟 最近從朋友那邊接收一塊板子
因為我習慣接上 TTY console
去看開機資訊
發現用TTY 時
當我輸入長指令時 他不會換行
會直接從原本這行的頭開始覆蓋
感覺沒有\r\n 只有 \r
但我用ssh 進去 卻可以正常換行
我用 set 和 env 列印所有環境變數
比較兩邊的環境變數
把懷疑的變數設成一樣
還是無法解決這個問題
上網查 很多人都是因為設定PS1 的關係
但我並沒有把PS1加入顏色的設定
也試著設成一樣的
一樣無效
請問 有人知道怎是那邊的問題嗎?
謝謝
————
剛剛發現
只要用 stty cols 和 stty rows
設定對的大小 就可以正常了
我納悶的是 為什麼用ssh 登入卻不用
再ssh 下 echo $LINES和 echo $COLUMNS 會隨著視窗大小自動更改
但我用TTL uart 的視窗
他卻不會自己更新 囧
作者: kdjf (我抓得到什麼呢?)   2021-02-10 23:15:00
因為openssh幫你把變數都設定好了啊
作者: bitlife (BIT一生)   2021-02-11 16:02:00
命令關鍵字stty, api關鍵字 termcapapi關鍵字還有curses,以你的case應該用stty設定可以解決icrnl 和 ocrnl 兩個試著調整(記得先記錄原值),推測比較是ocrnl的問題,輸入滿一列後負責輸入的api應該通知tty換行,如果TERM變數正確設定(和你的tty的實際情況符合),那麼一切就正常,但TERM沒設定或設錯,輸出crnl時就會有混亂結果漏了 inlcr 和 onlcr, 調整這四個(如同前述,我覺得問題在ocrnl/onlcr這邊,聽你的描述你沒有按ENTER,應該是output這邊的問題推完才發現自行發現是col,row數目問題. 所以上述推文想錯方向,回覆最後面的疑問. telnet,ssh是協定在handshaking過程中,client會通知server端自己這方的終端機型號,而固接的console及tty是要由管理員事先在檔案中描述,不是透過協定互換在GUI界面普及後,古早相關設定檔案都走入歷史,console和tty兩類裝置(console是電腦的主鍵盤螢幕,tty是通過serialport連上的裝置)設定方式也不同,現在終端機設定方式是怎樣,我也不清楚,得去google一下查到2013年的linux text terminal howto 是否適用於2021就有待實驗

Links booklink

Contact Us: admin [ a t ] ucptt.com