如何解決使用su - admin時nano螢幕文字亂碼的問題

如何解決使用su - admin時nano螢幕文字亂碼的問題

在終端機 I 中su - admin,在我的使用者帳戶中進行brew update、修改.bashrc等。

我注意到,在我的使用者會話中,在運行時更改視窗的大小nano根本不會擾亂文字。視窗大小完美調整。

然而,在打開新的終端視窗後,運行su - admin,然後nano嘗試調整大小 - 文字被打亂並且無法恢復。control-l不起作用。

當我登入管理員帳戶打開終端機並運行時,nano調整視窗大小沒有問題 - 文字不會打亂。

同樣的問題反過來也會發生。從我的管理員帳戶使用su - user、運行nano和調整大小將導致文字混亂。

知道這裡發生了什麼以及如何解決這個問題嗎?

我用的是nano 4.9

答案1

我知道這個問題有一個選定的答案,但如果您閱讀手冊,需要的是螢幕刷新,使用:

^L

這是

ctrl + L

如果由於某種原因緩衝區被損壞,您需要點擊它幾次。

答案2

終端模擬器將向與終端模擬器一起啟動的 shell 發送視窗更改訊號 (SIGWINCH)。 shell 應該將其傳遞給其子級 - 但是當您轉換到另一個使用者帳戶(使用su或以其他方式)時,它將無法向該 shell 發出訊號,因為它以不同的使用者身分執行。因此su'd shell 和從它運行的任何程式將繼續使用舊的視窗大小,而忽略了實際視窗大小已更改的事實。

要完全更新會話su以使用新的視窗大小,您需要eval $(resize)在該 shell 中運行。它將更新環境變數 COLUMNS 和 LINES (這就是eval需要的原因)以及終端設定(相當於命令stty rowsstty columns)。在許多情況下,不需要resizeeval...部分就足夠了,但某些程式可能也需要環境變數。

答案3

在 OS X 上使用login是解決此問題的方法。


$login
登入名稱:your username
密碼:your password
上次登入: 日 月 日 HH:MM:SS on ttys000
$whoami
您的使用者名稱

感謝用戶格格蘋果堆疊交換

相關內容