su 使用時にナノスクリーンのテキストが乱れる問題を解決する方法 - admin

su 使用時にナノスクリーンのテキストが乱れる問題を解決する方法 - admin

ターミナルで、su - admin自分のユーザーアカウントにログインしたままbrew update、 、 変更.bashrcなどを実行します。

nanoユーザー セッションで実行中にウィンドウのサイズを変更しても、テキストが乱れることはまったくないことに気づきました。ウィンドウのサイズは完全に変更されます。

ただし、新しいターミナル ウィンドウを開いて を実行し、サイズを変更しようとするsu - adminnano、テキストが乱れて、回復する方法がありません。control-lは機能しません。

管理者アカウントにログインしてターミナルを開き実行すると、nanoウィンドウのサイズ変更に問題はなく、テキストが乱れることもありません。

同じ問題が逆の場合でも発生します。管理者アカウントから使用しsu - userて実行しnano、サイズを変更すると、テキストが乱れます。

ここで何が起こっているのか、またこの問題をどう解決すればよいのか、何かご存知ですか?

私はnano4.9を使用しています

答え1

この問題には選択された回答があることは承知していますが、マニュアルを読むと、必要なのは次のコマンドを使用して画面を更新することです。

^L

それは

ctrl + L

何らかの理由でバッファが破損した場合は、数回タップする必要があります。

答え2

ターミナル エミュレータは、ターミナル エミュレータとともに起動されたシェルにウィンドウ変更信号 (SIGWINCH) を送信します。シェルはそれを子に渡すことになっていますが、別のユーザー アカウント ( を使用するか、またはそれsu以外の方法で) に移行すると、別のユーザーとして実行されているため、そのシェルに信号を送ることができません。そのため、su'd シェルとそこから実行されるプログラムは、実際のウィンドウ サイズが変更されたという事実に気づかず、古いウィンドウ サイズを使用し続けます。

新しいウィンドウ サイズを使用するようにセッションを完全に更新するには、そのシェルで をsu実行する必要があります。これにより、環境変数 COLUMNS と LINES (が必要な理由) とターミナル設定 (コマンド およびと同等) の両方が更新されます。多くの場合、部分がないだけで十分ですが、一部のプログラムでは環境変数も必要な場合があります。eval $(resize)evalstty rowsstty columnsresizeeval...

答え3

loginこの問題を回避するには、OS X を使用します。


$login
ログイン:your username
パスワード:your password
最終ログイン: 日 月 日 HH:MM:SS on ttys000
$whoami
ユーザー名

ユーザーに感謝grgの上Apple スタックエクスチェンジ

関連情報