
Im Terminal kann ich, su - admin
während ich in meinem Benutzerkonto bin brew update
, .bashrc
Folgendes 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 - admin
dann nano
versuche, die Größe zu ändern, ist der Text durcheinander und kann nicht wiederhergestellt werden. control-l
funktioniert nicht.
Wenn ich mich beim Administratorkonto anmelde, Terminal öffne und ausführe, nano
gibt 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 nano
und 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 su
oder auf andere Weise) gewechselt sind, kann sie dieser Shell kein Signal mehr senden, da sie als anderer Benutzer ausgeführt wird. Daher su
verwenden 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 su
und 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 eval
ist es erforderlich) als auch die Terminaleinstellungen (entspricht den Befehlen stty rows
und stty columns
) aktualisiert. In vielen Fällen reicht es möglicherweise aus, nur resize
auf 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 login
unter 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