특히 SSH 이후에 "eterm-color"를 사용할 수 없는 경우 emacs의 ansi-term에 대한 $TERM의 올바른 값은 무엇입니까?

특히 SSH 이후에 "eterm-color"를 사용할 수 없는 경우 emacs의 ansi-term에 대한 $TERM의 올바른 값은 무엇입니까?

내 현재 설정 은 다음 $TERM과 같습니다xterm-256color

if [[ -n "$EMACS" ]]; then
    export TERM=xterm-256color
    alias emacs="emacsclient --no-wait"
    export EDITOR="emacsclient --no-wait"
    export VISUAL="emacsclient"
fi

나는 그것을 설정하곤 했지만 eterm-color, 문제는 SSH를 통해 로그인하는 대부분의 컴퓨터에서 이 터미널 유형을 사용할 수 없다는 것입니다.

.bashrcUbuntu의 기본 설정은 TERM변수가 :으로 시작하는지 확인합니다 xterm-. 이 경우 창 제목을 설정하려고 시도합니다.

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

문제는 \[\e]0;입장에 있다. xterm 호환 터미널 에뮬레이터로 구문 분석해야 하지만 emacs(ansi-term)는 이를 수행하지 않습니다. 결과는 다음과 같은 터미널입니다.

0;user@host: ~user@host:~$ 

readline또한 입력한 텍스트가 터미널 너비보다 클 때 사용되는 일부 응용 프로그램이 중단됩니다.

eterm-color이 값으로 설정하면 일부 원격 호스트에서는 사용할 수 없고 설치할 수도 없기 때문에 문제가 발생합니다 less.

대부분의 배포판과 함께 제공되는 다른 터미널 유형이나 항항어를 인식할 수 있는 해킹과 같이 사용할 수 있는 트릭이 있습니까?관련 이스케이프 코드헤더를 설정할까요, 아니면 그냥 버릴까요?

답변1

원격 호스트에서 어떤 터미널을 사용할 수 있는지 구체적으로 알아낸 다음 설정할 수 있는 방법을 찾았습니다. 일반적으로 Ansi 호환 터미널이 하나 이상 있으므로 위조하기 위해 "해킹"이 필요하지 않습니다.

이는 다음과 같은 긴 SSH 명령을 통해 수행됩니다.

ssh -i ~/.ssh/some_key.pub -tty some_remote_server "export TERM=`ls -1R /usr/share/terminfo | grep ^eterm-color$ || ls -1R /usr/share/terminfo | grep ^aterm $ || ls -1R /usr/share/terminfo | grep ^ansi$ || ls -1R /usr/share/terminfo | grep ^xterm-256color$ ||

이는 원격 호스트에서 선호도에 따라 다른 ANSI 호환(및 비호환) 터미널 유형을 찾고 EMACS를 시작하기 전에 발견된 첫 번째 터미널 유형을 설정합니다. 선호하는 유형을 찾을 수 없으면 "xterm" 유형을 사용하도록 TERM을 설정하여 EMACS가 시작되도록 합니다.

이 예에서는 eterm-color, aterm, ansi, xterm-256color를 순서대로 찾고 있습니다. 나는 EMACS를 많이 사용하는 사용자가 아니므로 이것이 실제로 최고인지 확실하지 않습니다. CentOS에서 이 스타트업을 테스트했는데 제대로 작동했습니다(테스트에서 eterm-color가 발견되었습니다).

나는 terminfo가 대부분의/모든 Linux 변형에서 동일한 위치에 있다고 생각하지만 더 많은 터미널을 추가하는 것처럼 검색할 경로를 더 추가할 수 있습니다.

|| ls -1R /a/다른/경로 grep ^다른 터미널$
조건부 테스트 및 배관.

답변2

문제가 발생하면 vt100으로 설정하는 것이 좋습니다 TERM. 데비안 패키지에도 어디에나 설치됩니다 ncurses-base. 제안된 답변(ansi, aterm, xterm-256color)에 언급된 대안에는 차이점이 있습니다 eterm-color.

또한 제목 문자열 기능은 터미널 설명의 일부가 아닙니다. 원격 애플리케이션은 설정에 따라 이를 사용합니다 TERM(예: "xterm"을 사용하는 모든 것).

엄밀히 말하면, 당신은 색깔을 잃을 것입니다(결국,vt100은 컬러로 처리된 적이 없습니다.). 어쨌든 일부 앱에서는 이 작업을 수행합니다.

관련 정보