Как исправить странные escape-последовательности в командной строке (ps1) после удаленного входа в систему с iTerm2

Как исправить странные escape-последовательности в командной строке (ps1) после удаленного входа в систему с iTerm2

Я наблюдаю следующее странное приглашение после входа на мою удаленную машину из Ubuntu 14.04. Это происходит только когда я использую терминал Ubuntu GUI, а не через Putty. Есть какие-нибудь предложения по исправлению?

Это вывод после входа на удаленный сервер.

введите описание изображения здесь

решение1

Это действительно интеграция iTerm2. Вместо того, чтобы удалять ее, нужно было провести динамическое тестирование iTerm2 внутри их скрипта интеграции.Примечание: см. предупреждение о ssh ниже.

Есть последовательность ANSI, на которую iterm будет реагировать, которая работает независимо от того, какая оболочка/ssh активна. Для людей, желающих запустить свою собственную последовательность:printf '\x1b[1337n'.

Ваш .bashrc (или любой другой файл оболочки init, который вы используете) вероятно имеет что-то вроде:

тест -r ~/.iterm2_shell_integration.bash && . ~/.iterm2_shell_integration.bash

Возможно, без первоначального теста. Просто измените его на еще более уродливый:

isiterm2.sh&&тест -r ~/.iterm2_shell_integration.bash && . ~/.iterm2_shell_integration.bash

Пользователи VS Code Remote Explorer/SSH VS code, похоже, автоматически вводит/передает символы в ssh-соединение при запуске. Эти команды могут быть обрезаны последовательностью сброса stty в isIterm2.sh. Мой краткосрочный хак заключался в том, чтобы сделать эту проверку/загрузку на втором дисплее приглашения. ЭтотакойХотя это и пустяк.

решение2

Струны на самом деле непоследовательности ANSI. Скорее всего, они изначально были последовательностями ANSI, но были преобразованы (из-за какой-то ошибки скрипта) на вашем удаленном компьютере, так что большинство символов были преобразованы в другую форму.

Анпоследовательность ANSIнапример, имел бы

escape[A

возможно, с необязательным ;перед A, но проблемный вывод показывает 133( [восьмеричное число 133). Аналогично, на снимке экрана показан литерал, \033а не экранированный символ ASCII в нескольких местах.

Вероятнее всего, разница между графическим терминалом и putty заключается в том, что первый может иметь TERMзначение xterm-256color, в то время как PuTTY имеет собственную конфигурацию и TERMне был установлен в PuTTY (а его значением по умолчанию является xterm).

Ubuntu 14.04 не делал этого сам по себе (он существует уже давно, и никто не жаловался)этот), так что это "улучшение" после установки. Как и предлагалось, начните с поиска в своих собственных .bashrc(или в добавленных вами скриптах цветовых тем - некоторые из них очень глючные).

решение3

Похоже на интеграцию оболочки iTerm2. Смотретьhttp://www.iterm2.com/documentation-shell-integration.html.

Проверьте, является ли .iterm2_shell_integration.bash источником .bash_profile.

решение4

Это происходит из-за нестандартных кодов выхода Iterm2s:Собственные коды выхода, который был выпущен здесь:Интеграция с оболочкой отображает недопустимые символы на терминалах Linux. Чтобы устранить эту проблему, выполните следующие команды на удаленном сервере, на котором установлена ​​интеграция iTerm2:

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

  2. Измените свой .bash_profile(или .profileлюбой другой) файл, чтобы обусловить загрузку интеграции оболочки при успешном выполнении этого скрипта:

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

Связанный контент