어떤 터미널 유형을 사용합니까?

어떤 터미널 유형을 사용합니까?

Ubuntu 12.04 및 Debian 7에서 이것을 테스트했습니다. 내가 할 때

echo $TERM

알겠어요

xterm

하지만 도움말 > 정보 드롭다운을 사용하면 표시됩니다 gnome terminal 3.4.1.1.

이것은 gnome-terminal만 사용한다는 뜻인가요? 아니면 그냥 xterm인가요? 아니면 gnome-terminal이 xterm의 확장인가요? 혼란스러워요.

답변1

그것은 무엇 $TERM을 위한 것입니까?

$TERM변수는 애플리케이션이 터미널 기능을 활용하기 위해 사용됩니다.

예를 들어, 프로그램이 컬러 텍스트를 표시하려는 경우 먼저 사용 중인 터미널이 컬러 텍스트를 지원하는지 확인한 다음 지원하는 경우 컬러 텍스트를 표시하는 방법을 찾아야 합니다.

작동 방식은 시스템이 알려진 터미널과 해당 기능의 라이브러리를 유지한다는 것입니다. 이는 대부분의 시스템에서 사용할 수 있습니다 /usr/share/terminfo(termcap도 있지만 레거시이므로 더 이상 사용되지 않습니다).

빨간색 텍스트를 표시하려는 프로그램이 있다고 가정해 보겠습니다. 기본적으로 "라고 말하는 terminfo 라이브러리를 호출합니다.xterm 터미널에 빨간색 텍스트를 보내야 하는 바이트 시퀀스를 알려주세요.". 그런 다음 해당 바이트를 가져와서 인쇄합니다. 를
수행하여 직접 시도해 볼 수 있습니다 tput setf 4; echo hi. 그러면 setfterminfo 함수가 얻어지고 4원하는 색상인 매개변수가 전달됩니다.


그놈 터미널이 거짓말을 하는 이유는 무엇입니까?

이제 방금 출시된 멋진 새 터미널 에뮬레이터가 있는데 시스템의 terminfo 라이브러리에 아직 정의되어 있지 않다고 상상해 보세요. 애플리케이션이 어떤 작업을 수행하는 방법을 찾으려고 하면 터미널을 알 수 없기 때문에 실패합니다.

당신의 단말기가 이 문제를 해결하는 방법은 그것이 누구인지에 대해 거짓말을 하는 것입니다. 따라서 그놈 터미널에 "나는 xterm이다".

Xterm은 X11이 시작된 이래로 사용되어 온 매우 기본적인 터미널이므로 대부분의 터미널 에뮬레이터는 Xterm의 기능을 지원합니다. 따라서 gnome 터미널을 통해 xterm이라고 말하면 terminfo 라이브러리에 정의가 있을 가능성이 더 높습니다.

터미널 유형에 대해 거짓말을 하는 것의 단점은 터미널이 실제로 xterm보다 더 많은 기능을 지원할 수 있다는 것입니다(예를 들어, 많은 새로운 터미널은 256색을 지원하는 반면 이전 터미널은 16색만 지원합니다). 따라서 더 많은 기능을 얻는 것과 더 많은 호환성을 얻는 것 사이에는 균형이 있습니다. 대부분의 터미널은 더 높은 호환성을 선택하므로 자신을 xterm.

이 설정을 무시하려는 경우 많은 터미널에서 이 동작을 구성할 수 있는 방법을 제공합니다. 하지만 이것도 할 수 있습니다 export TERM=gnome-terminal.

답변2

환경 TERM변수는 터미널을 나타냅니다.유형, 터미널이 아님애플리케이션. TERM특정 목적이 있습니다. 해당 터미널에서 실행 중인 애플리케이션에 터미널과 상호 작용하는 방법을 알려줍니다.

응용 프로그램은 인쇄할 수 없는 문자를 포함하고 커서 이동, 화면 일부 지우기, 현재 색상 변경 등의 효과가 있는 문자 시퀀스인 이스케이프 시퀀스를 작성하여 터미널과 상호 작용합니다. 과거에는 물리적 단말기의 브랜드마다 기능이 달랐습니다. 이스케이프 시퀀스 집합입니다. 따라서 운영 체제는 터미널 유형 및 해당 특성에 대한 데이터베이스를 유지 관리합니다. 전통적인 데이터베이스는용어 모자("터미널 기능") 많은 최신 시스템과 애플리케이션이용어 정보. 두 데이터베이스 모두 터미널 유형 이름으로 색인화되며 애플리케이션은 TERM환경 변수의 터미널 유형 이름을 사용하여 이를 쿼리합니다.

오늘날 대부분의 터미널에서는표준 이스케이프 시퀀스 세트몇 가지 공통 확장 세트가 있으므로 다양한 값이 표시되지 않습니다 TERM. 대부분의 GUI 터미널 에뮬레이터는 호환됩니다.xterm, 전통적인 X 터미널(여전히 사용 및 유지 관리 중)입니다.

xterm 이외의 터미널 에뮬레이터는 자체 이름으로 터미널 데이터베이스에 자체 항목을 추가할 수 있습니다. 그러나 이것은 원격 쉘에서는 잘 작동하지 않습니다. 프로그램은 시스템 A에서 실행되지만 시스템 B에 표시됩니다. 예를 들어, ssh를 통해 B에서 A로 시작되면 시스템 A의 터미널 데이터베이스를 쿼리해야 합니다. SSH와 같은 원격 로그인 방법은 환경 변수를 전달 TERM하지만 이는 B의 터미널 데이터베이스에도 A의 user 값에 대한 항목이 있는 경우에만 유용합니다. 따라서 많은 터미널 에뮬레이터는 TERM=xterm거의 잘 알려진 항목을 고수합니다.

일반적으로 터미널 간의 차이점은 애플리케이션이 터미널과 상호 작용하는 방식이 아니라 터미널이 사용자와 상호 작용하고 환경에 적응하는 방식에 있습니다. 예를 들어, Gnome 터미널은 Gnome에서 보기 좋고 탭 및 기타 세부 정보를 제공합니다. Konsole은 KDE에서 보기 좋고 탭 및 기타 세부 정보를 제공합니다. Console2는 Windows 화면에서 실행되며 tmux는 다른 화면에 연결할 수 있습니다. 모 터미널 등 이러한 기능은 터미널에서 실행되는 응용 프로그램에 영향을 미치지 않으므로 대부분의 터미널 에뮬레이터는 TERM=xterm.

쉘이 어느 터미널에서 실행되고 있는지 알아내려면(쉘이 터미널에서 직접 실행되고 있다고 가정) 쉘의 부모를 살펴보십시오.

ps -p$PPID

답변3

환경 변수 TERM은 사용 중인 터미널을 나타내지 않습니다.

gnu.org 인용:

환경 변수 TERM에는 텍스트 창 기능의 식별자가 포함되어 있습니다. 참조를 위해 'infocmp' 명령과 'man 5 terminfo'를 사용하여 이러한 기능의 자세한 목록을 얻을 수 있습니다.

포함된 색상 지시문을 사용하여 텍스트를 생성할 때 msgcat는 TERM 변수를 확인합니다. 오늘날의 텍스트 창은 일반적으로 최소 8가지 색상을 지원합니다. 그러나 TERM 변수가 지원되는 8가지 색상만 나타내는 식별자로 설정된 경우에도 텍스트 창은 일반적으로 16가지 이상의 색상을 지원합니다. 이러한 경우 TERM 변수를 다른 값으로 설정하는 것이 좋습니다.

xterm대부분의 경우 16가지 색상을 지원합니다. 또한 88색 또는 256색을 지원할 수 있습니다(둘 다 지원하지는 않음). TERM을 xterm-16color, xterm-88color 또는 xterm-256color로 설정해 볼 수 있습니다. 가치를 얻다

가치를 얻다일반적으로 16가지 색상이 지원됩니다. TERM을 rxvt-16color로 설정해 볼 수 있습니다. 콘솔

콘솔너무 일반적으로 16가지 색상을 지원합니다. TERM을 konsole-16color 또는 xterm-16color로 설정해 볼 수 있습니다.

TERM을 설정한 후 "msgcat --color=test"를 호출하여 이를 확인하고 출력이 적절한 컬러맵처럼 보이는지 확인할 수 있습니다. 환경 변수 TERM에는 텍스트 창 기능의 식별자가 포함되어 있습니다. "infocmp" 명령과 "man 5 terminfo"를 참조로 사용하여 이러한 기능의 자세한 목록을 얻을 수 있습니다.

답변4

ps -p $$실행을 통해 프로세스의 현재 PID가 무엇인지 아는 원래 질문에 대한 답을 찾을 수 있다는 점은 주목할 가치가 있다고 생각합니다 . 예시 출력은 다음과 같습니다:

    PID TTY          TIME CMD
3045221 pts/17   00:00:00 bash

그것이 어떤 터미널인지는 꽤 분명합니다.

관련 정보