So lösen Sie das Problem, bei dem der Nano-Bildschirmtext bei Verwendung von su - admin durcheinandergeraten ist

So lösen Sie das Problem, bei dem der Nano-Bildschirmtext bei Verwendung von su - admin durcheinandergeraten ist

Im Terminal kann ich, su - adminwährend ich in meinem Benutzerkonto bin brew update, .bashrcFolgendes tun:

Mir ist aufgefallen, dass der Text beim Ändern der Fenstergröße während der Ausführung in meiner Benutzersitzung nanoüberhaupt nicht durcheinander gerät. Die Fenstergröße wird perfekt angepasst.

Wenn ich jedoch ein neues Terminalfenster öffne, ausführe und su - admindann nanoversuche, die Größe zu ändern, ist der Text durcheinander und kann nicht wiederhergestellt werden. control-lfunktioniert nicht.

Wenn ich mich beim Administratorkonto anmelde, Terminal öffne und ausführe, nanogibt es kein Problem mit der Größenänderung des Fensters – der Text wird nicht durcheinandergebracht.

Das gleiche Problem tritt auch umgekehrt auf. Wenn ich es von meinem Administratorkonto aus verwende su - user, ausführe nanound die Größe ändere, wird der Text durcheinandergebracht.

Irgendeine Idee, was hier passiert und wie dieses Problem gelöst werden kann?

Ich verwende Nano 4.9

Antwort1

Ich weiß, dass es für dieses Problem eine ausgewählte Antwort gibt. Wenn Sie jedoch das Handbuch lesen, müssen Sie den Bildschirm folgendermaßen aktualisieren:

^L

Welches ist

ctrl + L

Sie müssen ein paar Mal darauf tippen, falls der Puffer aus irgendeinem Grund beschädigt wird.

Antwort2

Der Terminalemulator sendet ein Fensterwechselsignal (SIGWINCH) an die Shell, die zusammen mit dem Terminalemulator gestartet wurde. Die Shell soll es an ihre untergeordneten Elemente weitergeben – aber wenn Sie zu einem anderen Benutzerkonto (mit suoder auf andere Weise) gewechselt sind, kann sie dieser Shell kein Signal mehr senden, da sie als anderer Benutzer ausgeführt wird. Daher suverwenden die Shell und alle von ihr ausgeführten Programme weiterhin die alte Fenstergröße, ohne zu bemerken, dass sich die tatsächliche Fenstergröße geändert hat.

Um die Sitzung vollständig zu aktualisieren suund die neue Fenstergröße zu verwenden, müssen Sie eval $(resize)in dieser Shell ausführen. Dabei werden sowohl die Umgebungsvariablen COLUMNS und LINES (deshalb evalist es erforderlich) als auch die Terminaleinstellungen (entspricht den Befehlen stty rowsund stty columns) aktualisiert. In vielen Fällen reicht es möglicherweise aus, nur resizeauf diesen eval...Teil zu verzichten, aber einige Programme benötigen möglicherweise auch die Umgebungsvariablen.

Antwort3

Eine Problemumgehung für dieses Problem ist die Verwendung loginunter OS X.


$ login
login: your username
password: your password
Letzte Anmeldung: Tag Monat Datum HH:MM:SS am ttys000
$ whoami
Ihr Benutzername

Dank an den BenutzergrgAnApple-Stack-Austausch

verwandte Informationen