iTerm2에서 원격 로그인 후 쉘 프롬프트( ps1 ) 이상한 이스케이프 시퀀스를 수정하는 방법

iTerm2에서 원격 로그인 후 쉘 프롬프트( ps1 ) 이상한 이스케이프 시퀀스를 수정하는 방법

우분투 14.04에서 원격 컴퓨터에 로그인한 후 아래와 같은 이상한 프롬프트가 나타납니다. 이것은 퍼티를 통하지 않고 ubuntu gui 터미널을 사용하는 동안에만 발생합니다. 문제를 해결하기 위한 제안이 있나요?

원격 서버에 로그인한 후의 출력입니다.

여기에 이미지 설명을 입력하세요

답변1

이것은 실제로 iTerm2 통합입니다. 이를 제거하는 대신 iTerm2에 대한 동적인 테스트는 통합 스크립트 내에서 수행되어야 합니다.참고: 아래 SSH에 대한 경고를 참조하세요.

어떤 shell/ssh가 활성화되어 있는지에 관계없이 iterm이 응답하는 ANSI 시퀀스가 ​​있습니다. 자신만의 롤을 원하는 사람들을 위한 순서는 다음과 같습니다.printf '\x1b[1337n'.

.bashrc(또는 사용하는 쉘 초기화)에는 다음과 같은 내용이 있을 수 있습니다.

테스트 -r ~/.iterm2_shell_integration.bash && . ~/.iterm2_shell_integration.bash

초기 테스트가 없을 수도 있습니다. 더 못생긴 것으로 바꾸십시오.

isiterm2.sh&&테스트 -r ~/.iterm2_shell_integration.bash && . ~/.iterm2_shell_integration.bash

VS Code 원격 탐색기/SSH 사용자 VS 코드는 시작할 때 SSH 연결에 문자를 자동 입력/공급하는 것 같습니다. 이러한 명령은 isIterm2.sh의 stty 재설정 시퀀스에 의해 잘릴 수 있습니다. 나의 단기 해킹은 프롬프트의 두 번째 디스플레이에서 이 확인/로드를 수행하는 것이었습니다. 이것은그런그래도 문제가 있습니다.

답변2

문자열은 실제로 그렇지 않습니다.ANSI 시퀀스. 오히려 ANSI 시퀀스로 시작했지만 원격 시스템에서 (일부 스크립팅 오류로 인해) 변환되어 대부분의 문자가 다른 형식으로 변환됩니다.

ANSI 시퀀스예를 들어

escape[A

;앞에 옵션이 있을 수 있지만 A문제가 있는 출력에는 133( [8진수 133)이 표시됩니다. 마찬가지로 스크린샷에는 \033여러 위치에서 ASCII 이스케이프 문자가 아닌 리터럴이 표시됩니다.

GUI 터미널과 Putty의 차이점은 전자가 로 TERM설정 되었을 수 있는 xterm-256color반면 PuTTY는 자체 구성이 있고 TERMPuTTY에서는 설정되지 않았다는 것입니다(기본값은 입니다 xterm).

우분투 14.04는 이 작업을 자체적으로 수행하지 않았습니다. (시간이 좀 지났지만 아무도 불평하지 않았습니다.)이것), 따라서 설치 후 "개선"입니다. 제안된 대로 직접 살펴보는 것 .bashrc(또는 추가한 색상 테마 스크립트 - 일부는 매우 버그가 있음)을 살펴보는 것부터 시작하십시오.

답변3

이는 iTerm2의 쉘 통합처럼 보입니다. 보다http://www.iterm2.com/documentation-shell-integration.html.

.iterm2_shell_integration.bash가 .bash_profile에서 제공되는지 확인하세요.

답변4

이는 Iterm2의 비표준 이스케이프 코드 때문입니다.독점 이스케이프 코드, 여기에서 발행되었습니다:쉘 통합으로 인해 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"

관련 정보