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(vim и tmux являются основными, которые меня интересуют). Как и @Freddy, я бы предпочел не устанавливать их в своем профиле оболочки, потому что я могу подключаться с другого типа терминала через SSH, и потому что это действительно задача эмулятора терминала, чтобы установить это. Я поражен тем, что gnome-терминал не предоставляет несколько эмуляций.
Джим Стюарт
3
vte-0.40 (который, вероятно, появится в Ubuntu 15.10) изменил значение по умолчанию на xterm-256colors.
egmont

Ответы:

17

Вам настоятельно советуют не менять сценарии запуска, особенно ~/.bashrc. Любое «обнаружение терминала» с использованием current $TERMили $COLORTERMin ~/.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"в этой строке для автоопределения оболочки;) Вы должны жестко закодировать его

MestreLion
источник
В этих настройках есть опция «Когда команда выходит:». Возможные варианты: «Выход из терминала», «перезапустить команду» и «удерживать терминал открытым». Какой я должен выбрать?
Калеб Джей
@CalebJay: в зависимости от того, что вы предпочитаете, эта опция не связана с цветами терминала. Что делать, когда команда заканчивается, это просто вопрос предпочтений.
МестреЛион
12

Для соединения с терминалом, который не может сделать 256 цветов.

Было бы гораздо лучше обнаружить терминал специально с $COLORTERM. Найдите gnome-терминал, xfce4-терминал и т. Д., А затем установите для $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 Terminal начиная с версии 3.13 больше не устанавливается COLORTERM.
MestreLion
2
На версии, которые больше не установлены, COLORTERMвы можете положиться VTE_VERSION.
egmont
6

Хотя у terminfo есть xterm + 256color ( /usr/share/terminfo/x/xterm+256color), а в termcap есть только xterm ( /usr/share/vte/termcap/xterm), поэтому изменение $TERMне рекомендуется.

Во всяком случае, $TERMустанавливается не gnome-терминал, а 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