В чистой установке Ubuntu 12.10 терминал gnome по умолчанию сообщает, что $ TERM должен быть xterm, тогда как он действительно должен сообщать о xterm-256color. Каков наилучший способ изменить это? Я избегаю помещать это в мой .bashrc, потому что это просто напрашивается на неприятности.
Вам настоятельно советовали не менять сценарии запуска, особенно ~/.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"
в этой строке для автоопределения оболочки;) Вы должны жестко закодировать его
Хотя у 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
Для соединения с терминалом, который не может выполнять 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