$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를 통해 로그인하는 대부분의 컴퓨터에서 이 터미널 유형을 사용할 수 없다는 것입니다.
.bashrc
Ubuntu의 기본값은 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를 발견했습니다).
나는 용어 정보가 대부분의/모든 Linux 변형에서 같은 위치에 있다고 생각하지만 더 많은 터미널을 추가하는 것과 동일한 방식으로 더 많은 경로를 추가하여 검색할 수 있습니다.
|| ls -1R /a/다른/경로 | grep ^someotherterminal$조건부 테스트 및 파이프.
답변2
문제가 발생하면 vt100으로 설정하는 것이 좋습니다 TERM
. 데비안 ncurses-base
패키지를 포함해 모든 곳에 설치됩니다. 제안된 답변(ansi, aterm, xterm-256color)에 언급된 대안에는 eterm-color
.
또한 제목 문자열 기능은 터미널 설명의 일부가 아닙니다. 귀하의 원격 애플리케이션은 예를 들어 "xterm"을 사용하는 모든 것의 설정을 기반으로 이를 사용하고 있습니다 TERM
.
기술적으로는 색상이 손실될 수 있습니다(결국,vt100은 컬러링을 한 적이 없습니다.). 어쨌든 일부 응용 프로그램에서는 이 작업을 수행합니다.