기본 TERM 쉘 변수 값은 어떻게 설정됩니까?


13

Maverick으로 업그레이드 한 후 TERM 변수를 'dumb'으로 설정했는데 Lucid에서 실행되는 동일한 홈 디렉토리에서 발생하지 않으며 TERM과 관련된 것을 수동으로 변경하지 않았습니다.

TERM 변수의 위치는 어디입니까?

답변:


13

Gilles가 말한 것을 자세히 설명하기 위해 Putty를 사용하여 Windows에서 우분투에 원격으로 연결한다고 가정하십시오.

퍼티 구성 옵션의 연결-> 데이터 아래에 터미널 유형 문자열이라는 설정이 있습니다. TERM을 설정할 수 있으며 putty는 SSH에게 해당 환경 변수를 설정하도록 지시합니다. 그 후 어느 시점에서 쉘은 / bin / bash 일 것이고 아마도 부모 프로세스, 아마도 sshd 프로세스에서 환경을 얻습니다.

원격 Linux 상자에서 ssh를 사용하는 경우 로컬 TERM 환경 변수가 ssh를 통해 원격 연결로 전달되는 것만 같습니다.

터미널 에뮬레이터의 경우 TERM 환경 변수를 설정하는 것이 터미널 에뮬레이터의 작업입니다. 예를 들어 getty는 TERM을 "linux"로 설정하고 쉘 프로세스 (/ bin / bash)를 분기합니다. 또는 gnome-terminal은 TERM을 "xterm"으로 설정하고 쉘 프로세스를 분기합니다.


나는 그놈 터미널이 제대로 작동하는지 확인했으며 실제로 "에뮬레이터"버그입니다. 터미네이터를 사용하고 있습니다. 감사합니다
João Pinto

9

말 그대로 질문에 대답하기 위해 터미널 에뮬레이터는으로 설정됩니다 $TERM

문제를 해결하려면 최소한 사용하는 터미널 에뮬레이터를 알아야합니다. 그것은 버그 또는 잘못된 터미널 에뮬레이터 또는 쉘 시작 파일에 문제가 (아마이 될 수 ~/.bashrc있지만, 아마도 ~/.bash_profile, /etc/bashrc, /etc/profile, ...).

¹ 하드웨어 터미널을 사용하지 않는다고 가정합니다. 그러면 (SysVinit를 사용하는 이전 릴리스) 또는 (Ubuntu ≥9.10, Upstart를 사용하여 ) getty에서 호출되는 인수가됩니다.inittab/etc/init/tty*.conf


2
getty는 inittab에서 호출되지 않습니다. 우분투에는 더 이상 inittab이 없습니다! 콘솔은 /etc/init/tty*.conf에 의해 정의됩니다
LassePoulsen

4
답을 통해 처음으로 각주에 대해 본 배지를 얻을 수 있다고 생각합니다. :-)
poolie

이제 15.04 + upstart이므로 더 이상 기본값이 아니며 다시 getty @ 서비스에서 시스템을 처리합니다. 나는 여전히 그 변화에 익숙해졌습니다 (upstart에 대해 모든 것을 배운 후에는 그림, 이제는 systemd와 동일한 작업을 수행 ... meh !!)
osirisgothra

1

터미널을 변경하려면 업데이트 대안 기능을 확인하십시오.

예를 들어 :

update-alternatives --config x-terminal-emulator

우분투의 다양한 시스템 기본 옵션 중 다수는이 방법을 통해 설정됩니다. 또 다른 일반적인 것은 www-browser입니다.

update-alternatives --config x-www-browser
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.