
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
~/.screenrc
Datei „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 dengetent
Berichten übereinstimmt.
Wenn Ihre eigentliche Login-Shell auf einigen Systemen auf etwas Seltsames eingestellt ist, müssen Sie Screen möglicherweise manuell mit der shell bash
Einstellung 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 off
dies 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.