Cómo arreglar las secuencias de escape impares del indicador de shell (ps1) después del inicio de sesión remoto desde iTerm2

Cómo arreglar las secuencias de escape impares del indicador de shell (ps1) después del inicio de sesión remoto desde iTerm2

Observo el extraño mensaje a continuación después de iniciar sesión en mi máquina remota desde ubuntu 14.04. Esto solo sucede mientras uso la terminal gui de ubuntu y no a través de PuTTY. ¿Alguna sugerencia para solucionarlo?

Este es el resultado después de iniciar sesión en el servidor remoto.

ingrese la descripción de la imagen aquí

Respuesta1

De hecho, esta es la integración de iTerm2. En lugar de eliminarlo, la prueba dinámica de iTerm2 debería haberse realizado dentro de su script de integración.Nota: consulte la advertencia sobre ssh a continuación.

Hay una secuencia ANSI a la que iterm responderá y que funciona independientemente de qué shell/ssh esté activo. Para las personas que quieran rodar el suyo propio, la secuencia esprintf '\x1b[1337n'.

Su .bashrc (o cualquier shell init que use) probablemente tenga algo como:

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

Posiblemente sin la prueba inicial. Simplemente cámbielo a uno aún más feo:

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

Usuarios de VS Code Remote Explorer/SSH El código VS parece escribir/alimentar caracteres automáticamente a la conexión ssh al iniciarse. Esos comandos pueden ser cortados por la secuencia de reinicio stty en isIterm2.sh. Mi truco a corto plazo ha sido hacer esta verificación/carga en la segunda pantalla del mensaje. Esto essemejanteaunque fue una chapuza.

Respuesta2

Las cuerdas en realidad no sonsecuencias ANSI. Más bien, comenzaron como secuencias ANSI, pero se traducen (debido a algún error de secuencia de comandos) en su máquina remota, de modo que la mayoría de los caracteres se convierten a una forma diferente.

Unsecuencia ANSIpor ejemplo tendría

escape[A

posiblemente con un opcional ;antes de A, pero el resultado problemático muestra un 133( [es octal 133). Asimismo, la captura de pantalla muestra un carácter de escape literal \033en lugar del ASCII, en varios lugares.

Es muy probable que la diferencia entre el terminal gui y PuTTY sea que el primero puede haberse TERMconfigurado en xterm-256color, mientras que PuTTY tiene su propia configuración y TERMno se configuró en PuTTY (y su valor predeterminado es xterm).

Ubuntu 14.04 no hizo esto por sí solo (ha existido por un tiempo y nadie se ha quejado de ello).este), por lo que es una "mejora" posterior a la instalación. Como se sugirió, comience buscando en los suyos propios .bashrc(o en los scripts de temas de color que agregó; algunos de ellos tienen muchos errores).

Respuesta3

Esto se parece a la integración del shell de iTerm2. Verhttp://www.iterm2.com/documentation-shell-integration.html.

Verifique si .iterm2_shell_integration.bash proviene de .bash_profile.

Respuesta4

Esto se debe a los códigos de escape no estándar de Iterm2:Códigos de escape propietarios, que ha sido publicado aquí:La integración de Shell muestra caracteres no válidos en terminales Linux. Para solucionar este problema, ejecute estos comandos en su servidor remoto que tenga instalada la integración de iTerm2:

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

  2. Modifique su .bash_profile(o .profiledonde sea) para condicionar la carga de la integración del shell en que ese script se realice correctamente:

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

información relacionada