Gnome-Terminal повідомляє, що $ TERM є `xterm`


21

У чистому встановленні Ubuntu 12.10 за замовчуванням gnome-термінал повідомляє, що $ TERM є xterm, де він справді повинен звітувати про xterm-256color. Який найкращий спосіб змінити це? Я уникаю вносити це у свій .bashrc, тому що це просто прохання про проблеми.


2
Хочете пояснити, чому xterm помиляється? Афаїк, у всіх нас є xterm. Крім того: також небайдуже пояснити, чому введення цього в bashrc вимагає неприємностей?
Rinzwind

4
xtermце неправильно , тому що більшість додатків не працюватиме в режимі 256 кольорів , якщо це не xterm-256colorабо screen-256color(ВІМ і tmux бути основні з них я дбаю о). Як і @Freddy, я вважаю за краще не встановлювати їх у своєму профілі оболонки, тому що я, можливо, підключаюсь до іншого типу терміналу через SSH, і тому що це справді завдання емулятора терміналу, щоб встановити це. Я вражений тим, що gnome-термінал не забезпечує багаторазову емуляцію.
Джим Стюарт

3
vte-0.40 (який, мабуть, з'явиться в Ubuntu 15.10) змінив типове значення на xterm-256colors.
Егмонт

Відповіді:


17

Вам добре порадили не змінювати сценарії запуску спеціально ~/.bashrc. Будь-яке "виявлення терміналу", що використовує струм $TERMабо $COLORTERMв, ~/.profile- лише здогадка, і, як ви вже сказали, може спричинити проблеми при використанні інших терміналів (скажімо, Putty або xterm). Передбачається встановити термінальний емулятор $TERM, і це не повинно змінюватися зсередини оболонки.

Термінал Gnome, AFAIK, не пропонує конфігурації для зміни його TERM, але він дозволяє вам змінити команду запуску, і це все, що вам потрібно. Ось хитрість:

Profile Preferences => Title and Command => Run a custom command instead of my shell

Потім використовуйте таку команду:

env TERM=xterm-256color /bin/bash

Просто замініть /bin/bashбажаною оболонкою, якщо вона відрізняється. І ні, ви не можете використовувати "$SHELL"в цьому рядку для автоматичного виявлення оболонки;) Вам доведеться жорстко кодувати це


У цих налаштуваннях є опція "Коли команда закінчується:". Параметри "Вийти з терміналу", "Перезапустити команду" та "Тримати термінал відкритим". Яку вибрати?
Калеб Джей

@CalebJay: що б ви не хотіли, цей варіант не пов'язаний з кольорами терміналів. Що робити, коли команда закінчується - суто питання переваги.
MestreLion

12

Для з'єднання з терміналом, який не в змозі зробити 256 кольорів.

Набагато краще було б виявити термінал спеціально за допомогою $COLORTERM. Знайдіть gnome-terminal, xfce4-terminal тощо, а потім встановіть $TERMзмінну на xterm-256color.

Я роблю це з:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi

4
Тільки майте на увазі, що термінал Gnome з 3.13 і більше не встановлюється COLORTERM.
MestreLion

2
Для версій, які більше не встановлені, COLORTERMви можете покластися VTE_VERSION.
Егмонт

6

Хоча це правда, що у terminfo є xterm + 256color ( /usr/share/terminfo/x/xterm+256color), у termcap є просто xterm ( /usr/share/vte/termcap/xterm), тому зміна $TERMне доцільна.

Так чи інакше, $TERMзадається не gnome-terminal, а vte. Значення за замовчуванням для цієї змінної середовища можна змінити або під час компіляції (надання опції сценарію налаштування), або за допомогою виклику vte_pty_set_term()функції. Дивлячись на джерела gnome-терміналу, я бачу, що vte_pty_set_termвін ніколи не викликається, тому можу сказати, що немає способів змінити $TERM, редагуючи налаштування gnome-терміналу.

Що вам потрібно зробити, це помістити у свій текст наступний фрагмент коду ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi

==- це синтаксис, що не стосується лише bash, не використовуйте його для фрагментів, призначених для отримання sh(що стосується ~/.profileDE). Також синтаксис "x $ .." не потрібен, оскільки ви правильно цитуєте розширення var.
MestreLion

@MestreLion: сміливо редагуйте моє запитання.
Андреа Корбелліні

Я спробував, але AU вимагає, щоб зміни були більше 6 символів, звідси коментар
MestreLion
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.