Como corrigir sequências de escape estranhas do prompt do shell (ps1) após login remoto do iTerm2

Como corrigir sequências de escape estranhas do prompt do shell (ps1) após login remoto do iTerm2

Estou observando o prompt estranho abaixo após fazer login em minha máquina remota no Ubuntu 14.04. Isso só acontece enquanto estou usando o terminal gui do Ubuntu e não via PuTTY. Alguma sugestão para consertar isso?

Esta é a saída após o login no servidor remoto.

insira a descrição da imagem aqui

Responder1

Esta é realmente a integração do iTerm2. Em vez de removê-lo, o teste dinamicamente para o iTerm2 deveria ter sido feito dentro do script de integração.Nota: Veja o aviso sobre ssh abaixo.

Existe uma sequência ANSI à qual o iterm responderá e que funciona independentemente de qual shell/ssh está ativo. Para as pessoas que querem fazer a sua própria sequência, a sequência éprintf '\x1b[1337n'.

Seu .bashrc (ou qualquer shell init que você usa) provavelmente tem algo como:

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

Possivelmente sem o teste inicial. Basta alterá-lo para um ainda mais feio:

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

Usuários do Explorador Remoto/SSH do Código VS O código VS parece digitar/alimentar automaticamente caracteres para a conexão ssh durante a inicialização. Esses comandos podem ser interrompidos pela sequência de redefinição stty em isIterm2.sh. Meu truque de curto prazo foi fazer essa verificação/carregamento na segunda exibição do prompt. Isso étalum erro, no entanto.

Responder2

As cordas não são realmenteSequências ANSI. Em vez disso, eles começaram como sequências ANSI, mas são traduzidos (devido a algum erro de script) em sua máquina remota para que a maioria dos caracteres seja convertida em um formato diferente.

UmSequência ANSIpor exemplo teria

escape[A

possivelmente com um opcional ;antes de A, mas a saída problemática mostra um 133( [é octal 133). Da mesma forma, a captura de tela mostra um \033caractere de escape literal em vez de ASCII, em vários lugares.

Muito provavelmente a diferença entre o terminal gui e o putty é que o primeiro pode ter sido TERMdefinido como xterm-256color, enquanto o PuTTY tem sua própria configuração e TERMnão foi definido no PuTTY (e seu padrão é xterm).

O Ubuntu 14.04 não fez isso sozinho (já existe há algum tempo e ninguém reclamouesse), então é uma "melhoria" pós-instalação. Conforme sugerido, comece procurando seus próprios scripts .bashrc(ou scripts de tema de cores que você adicionou - alguns deles apresentam muitos bugs).

Responder3

Parece a integração do shell do iTerm2. Verhttp://www.iterm2.com/documentation-shell-integration.html.

Verifique se .iterm2_shell_integration.bash está sendo fornecido por .bash_profile.

Responder4

Isso ocorre por causa dos códigos de escape não padrão dos Iterm2s:Códigos de escape proprietários, que foi emitido aqui:A integração do Shell exibe caracteres inválidos em terminais Linux. Para corrigir esse problema, execute estes comandos em seu servidor remoto que instalou a integração iTerm2:

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

  2. Modifique seu .bash_profile(ou .profileou qualquer outro lugar) para condicionar o carregamento da integração do shell nesse script com sucesso:

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

informação relacionada