So beheben Sie seltsame Escape-Sequenzen in der Shell-Eingabeaufforderung (ps1) nach der Remote-Anmeldung von iTerm2

So beheben Sie seltsame Escape-Sequenzen in der Shell-Eingabeaufforderung (ps1) nach der Remote-Anmeldung von iTerm2

Ich beobachte die folgende seltsame Eingabeaufforderung, nachdem ich mich von Ubuntu 14.04 aus bei meinem Remote-Computer angemeldet habe. Dies geschieht nur, wenn ich das Ubuntu-GUI-Terminal verwende und nicht über Putty. Irgendwelche Vorschläge, um das Problem zu beheben?

Dies ist die Ausgabe nach der Anmeldung beim Remote-Server.

Bildbeschreibung hier eingeben

Antwort1

Dies ist tatsächlich eine iTerm2-Integration. Anstatt sie zu entfernen, hätte der dynamische Test für iTerm2 innerhalb des Integrationsskripts erfolgen sollen.Hinweis: Siehe Warnung zu SSH unten.

Es gibt eine ANSI-Sequenz, auf die iterm reagiert und die unabhängig davon funktioniert, welche Shell/SSH aktiv ist. Für Leute, die ihre eigene Sequenz erstellen möchten, lautet die Sequenzprintf '\x1b[1337n'.

Ihre .bashrc (oder welche Shell-Initialisierung Sie auch immer verwenden) enthält wahrscheinlich etwa Folgendes:

test -r ~/.iterm2_shell_integration.bash && . ~/.iterm2_shell_integration.bash

Möglicherweise ohne den ersten Test. Ändern Sie es einfach in ein noch hässlicheres:

isiterm2.sh&&test -r ~/.iterm2_shell_integration.bash && . ~/.iterm2_shell_integration.bash

VS Code Remote Explorer/SSH-Benutzer VS-Code scheint beim Start automatisch Zeichen an die SSH-Verbindung zu senden. Diese Befehle können durch die STTY-Reset-Sequenz in isIterm2.sh unterbrochen werden. Mein kurzfristiger Hack bestand darin, diese Prüfung/Ladung bei der zweiten Anzeige der Eingabeaufforderung durchzuführen. Dies istsolchallerdings ein Kludge.

Antwort2

Die Saiten sind eigentlich nichtANSI-Sequenzen. Vielmehr begannen sie als ANSI-Sequenzen, wurden aber (aufgrund eines Skriptfehlers) auf Ihrem Remotecomputer übersetzt, sodass die meisten Zeichen in eine andere Form umgewandelt wurden.

EinANSI-Sequenzhätte zum Beispiel

escape[A

möglicherweise mit einem optionalen ;vor dem A, aber die problematische Ausgabe zeigt ein 133( [ist Oktal 133). Ebenso zeigt der Screenshot \033an mehreren Stellen ein Literal anstelle des ASCII-Escapezeichens.

Der Unterschied zwischen dem GUI-Terminal und Putty liegt sehr wahrscheinlich darin, dass ersteres möglicherweise TERMauf eingestellt ist xterm-256color, während PuTTY seine eigene Konfiguration hat und TERMin PuTTY nicht eingestellt wurde (und sein Standardwert ist xterm).

Ubuntu 14.04 hat dies nicht von selbst getan (es gibt es schon eine Weile und niemand hat sich darüber beschwert).Das), es handelt sich also um eine „Verbesserung“ nach der Installation. Wie vorgeschlagen, beginnen Sie damit, in Ihren eigenen .bashrc(oder in den von Ihnen hinzugefügten Farbthema-Skripten – einige davon sind sehr fehlerhaft) nachzuschauen.

Antwort3

Dies sieht aus wie die Shell-Integration von iTerm2. Siehehttp://www.iterm2.com/documentation-shell-integration.html.

Überprüfen Sie, ob .iterm2_shell_integration.bash von .bash_profile bezogen wird.

Antwort4

Dies liegt an den nicht standardmäßigen Escape-Codes von Iterm2s:Proprietäre Escape-Codes, die hier veröffentlicht wurde:Shell-Integration zeigt auf Linux-Terminals ungültige Zeichen an. Um dieses Problem zu beheben, führen Sie diese Befehle auf Ihrem Remote-Server aus, auf dem die iTerm2-Integration installiert ist:

  1. curl https://raw.githubusercontent.com/gnachman/iTerm2/master/tests/isiterm2.sh > ~/.isiterm2.sh && chmod ug+x ~/.isiterm2.sh

  2. Ändern Sie Ihre .bash_profile(oder .profileoder wo auch immer) so, dass das Laden der Shell-Integration für dieses Skript erfolgreich ist:

    ~/.isiterm2.sh && test -e "$HOME/.iterm2_shell_integration.bash" && source "$HOME/.iterm2_shell_integration.bash"

verwandte Informationen