Verhalten am Ende von Linux weniger abhängig von der Verbindungsquelle
Frage
Als ich versuchte, mit dem Buch "New Linux Textbook" mit Linux zu beginnen, funktionierten einige der Lehrbücher nicht und ich fand es nicht. Also werde ich es als Memorandum belassen.
Insbesondere ist dies das Verwendungsbeispiel für "Exportbefehl" in Kapitel 08-04.
Setzen Sie in diesem Kapitel "--no-init" für die Umgebungsvariable "LESS" und überprüfen Sie die Verhaltensänderung des Befehls less (der Bildschirm wurde am Ende gelöscht, aber der Bildschirm wird nicht gelöscht). Als ich jedoch eine Verbindung zu Hyper-V herstellte und von dort aus arbeitete, wurde der Bildschirm nicht gelöscht, auch wenn ich die Einstellungen nicht geändert hatte, und ich verstand nicht, warum er nicht dem Lehrbuch folgte.
(Ich habe auch den Alias überprüft, aber es gibt keine Einstellung für weniger)
Ich bin also ein Anfänger, aber ich habe versucht, so viel wie möglich herauszufinden, was die Ursache war.
Verhalten, das ich untersucht habe
Betrieb unter Linux (beim Zugriff von Hyper-V) (Ende mit weniger / etc / crontab → q)
Sie können bestätigen, dass der Bildschirm nicht gelöscht wird und der angezeigte Inhalt erhalten bleibt.
Betrieb des Terminals (wenn das Terminal von Teraterm oder GUI aus gestartet wird) (wie oben)
Wenn Sie vom Terminal aus zugreifen, sehen Sie, dass der Bildschirm am Ende gelöscht wird.
Ich fand es heraus, indem ich nachforschte
- Als ich mir die Quelle von ~~ less ansah, wurde der Bildschirm gelöscht, als "is_tty" True war. Diese Variable wird auf "isatty (1)" gesetzt und scheint laut Dokumentation "1" zu sein, wenn eine Verbindung von einem Terminal hergestellt wird. ~~
- ~~ weniger Quelle Anwendbarer Teil: https://github.com/gwsw/less/blob/e27853c89be227ad7a1a81aefd2942c03bd32dad/main.c#L387~~
- ~~ isatty manual ("1" scheint die Standardausgabe anzuzeigen): https://linuxjm.osdn.jp/html/LDP_man-pages/man3/isatty.3.html~~
(2020/04/06: Als ich anhand der erhaltenen Kommentare nachgesehen habe, wurde es gelöscht, da isatty (1) in beiden Fällen mit Sicherheit "1" zurückgegeben hat. Danke @ angel_p_57!)
- Ich habe bestätigt, dass sich der Wert der Umgebungsvariablen $ TERM abhängig von Ihrer Anmeldung ändert.
- Bei Verbindung mit Hyper-V: Linux
--Wenn Sie das Terminal über die GUI starten oder sich von außen anmelden (mit teraterm): xterm
- Wenn Sie die obige Umgebungsvariable TERM ändern, verhält sie sich wie Linux auf dem Terminal und wie das Terminal unter Linux, sodass sie mit ~~ isatty in Beziehung zu stehen scheint. Es scheint mit ~~ $ TERM zu funktionieren.
-Wenn Sie mit $ TERM umschalten, ändert sich die Operation abhängig davon, ob "smcup" oder "rmcup" in "Terminalinformationen (infocmp)" enthalten ist.
(Korrigiert aufgrund der am 06.04.2020 eingegangenen Kommentare. Vielen Dank an angel_p_57!)
Privater Abschluss
Da das obige Lehrbuch grundsätzlich im Terminal ausgeführt werden soll, ist es im Prinzip besser, es im Terminal auszuführen, als direkt auf Linux zuzugreifen.