Warum kann ich beim Verwenden des Bildschirms nicht scrollen oder Strg-A/Strg-E verwenden?

Warum kann ich beim Verwenden des Bildschirms nicht scrollen oder Strg-A/Strg-E verwenden?

Ich verwende iTerm2 und habe festgestellt, dass bei Verwendung von screen: ssh -t [Benutzername]@[Domäne].edu 'screen -DR'

Dabei fielen mir folgende Besonderheiten auf:

  • Ich kann mit meiner Maus in einem iTerm2-Fenster nicht nach oben und unten scrollen

  • Ich kann nicht mit Strg+A zum Zeilenanfang gelangen

  • Ich kann Strg+E nicht verwenden, um zum Ende einer Zeile zu gelangen

  • Mein ~/.bash_profile ist nicht als Quelle angegeben

Ich bin sicher, dass es noch andere gibt, aber wie kann ich dafür sorgen, dass es sich so verhält, als hätte ich mich gerade per SSH ohne eine Bildschirmsitzung angemeldet?

Antwort1

Die von Ihnen erwähnten Tastaturkürzel werden von der Bash-Shell implementiert. Wenn sie nicht funktionieren, bedeutet das wahrscheinlich, dass Sie aus irgendeinem Grund nicht Bash als Shell verwenden – obwohl es etwas seltsam ist, dass Screen eine andere Shell startet als SSH:

  • Überprüfen Sie, ob Ihre ~/.screenrcDatei „Shell“- oder „Defshell“-Befehle enthält.
  • getent passwd $USERÜberprüfen Sie, ob die im letzten Feld gemeldete Shell /bin/bash ist.
  • Überprüfen Sie, ob printenv SHELL(außerhalb des Bildschirms) mit den getentBerichten übereinstimmt.

Wenn Ihre eigentliche Login-Shell auf einigen Systemen auf etwas Seltsames eingestellt ist, müssen Sie Screen möglicherweise manuell mit der shell bashEinstellung screenrc anweisen, Bash zu verwenden. (Es ist beispielsweise möglich, dass Ihr Server tatsächlich /bin/sh als Shell des Benutzerkontos hat, aber shs ~/.profile dann so konfiguriert ist, dass /bin/bash oben gestartet wird. In diesem Fall liest die von Screen gestartete „sh“-Shell ~/.profile nicht und springt nicht zu Bash.)


Ihre ~/.bash_profile wird nicht für Nicht-Login-Shells verwendet. Die äußere Shell, die Sie gestartet haben Screenauswar eine „Login“-Shell; die Shells innerhalb von Screen sind normalerweise keine Login-Shells und es wird erwartet, dass sie nur ~/.bashrc, aber keine „Profil“-Skripte laden – damit wird vermieden, dass jedes neue Screen-Fenster unnötigerweise Dinge startet, die bereits von der ursprünglichen Shell gestartet wurden.

Dinge wie Aliase und Funktionen sollten stattdessen eingefügt werden ~/.bashrc, aber die „Shell“-Einstellung in screenrc kann verwendet werden, um den Start der Shell im „Anmeldemodus“ zu erzwingen, indem ihrem Befehl ein vorangestellt wird -, z. B. -bash.


Standardmäßiges terminalbasiertes Scrollen funktioniert nicht mit Multiplexern wie Screen oder tmux, und das ist teilweise so gewollt: Der Multiplexer ist sein eigener Terminalemulator und steuert das äußere Terminal auf eine direktere Art und Weise, bei der Text nicht so sehrrausscrollenwie es istgelöscht und überschrieben.

Wenn Ihre Screen-Sitzung beispielsweise über zwei horizontal geteilte Fenster verfügt, muss der Text aus dem unteren Fenster explizit gelöscht werden, wenn er aus dem Blickfeld gescrollt wird, da sonst im oberen Fenster Müll landet. (Wie würde das Zurückscrollen funktionieren, wenn Ihre Screen-Sitzung über zwei vertikal geteilte Fenster verfügt?)

Aus diesem Grund ist Screen normalerweise so konfiguriert, dass das äußere Terminal absichtlich in den Modus „alternativer Bildschirm“ umgeschaltet wird, wodurch das Scrollback von iTerm2 für die Dauer deaktiviert wird. Sie können versuchen, altscreen offdies mit der Einstellung in Ihrer Screenrc zu verhindern, aber erwarten Sie nicht, dass das Scrollback von iTerm viel Sinn ergibt.

Stattdessen können Sie in den „Kopiermodus“ von Screen wechseln, um Ctrl-a[durch einen bestimmten Bereich blättern zu können.

verwandte Informationen