Смена терминальных эмуляторов

10

У меня есть SSH доступ к удаленной машине. В этой машине, если я бегу, echo $TERMя получаю xterm.

Если я хочу изменить свой эмулятор терминала на какой-либо другой эмулятор (при условии, что он установлен на удаленном компьютере), как бы я это сделал?

Амелио Васкес-Рейна
источник

Ответы:

15

Значение переменной среды TERM используется сервером (в системе V или BSD, производных ОС) для управления тем, как система распознает ввод и какие возможности существуют для вывода. Некоторые типы терминалов достаточно похожи, чтобы их можно было взаимозаменять, оставаясь при этом полезными, в то время как другие могут сделать систему непригодной для использования, пока вы не откроете новое соединение с поддерживаемым значением для TERM. Например, из одной системы Linux в другую вы, вероятно, почувствуете очень небольшую разницу между настройками vt100, vt220 и xterm. Большая часть различий заключается в том, как отображается вывод, а также в том, доступны ли цвета или полужирные шрифты для этого типа терминала. База данных termcap перечисляет все типы терминалов с их различными возможностями.

Пока вы не переключитесь на тип терминала, с которым не совместимы клавиатура и экран, все будет в порядке.

прочтите справочную страницу для term и termcap в вашей системе для получения дополнительной информации.

Чтобы изменить тип терминала:

в bash:

export TERM=vt100

в Bourne Shell или Ksh:

TERM=vt100
export TERM

в csh или tcsh:

setenv TERM vt100

vt100довольно безопасный терминал, с которого можно начать играть. он совместим с xterm, но он не отображает цвета и жирный шрифт и может не распознавать ваши клавиши F *, но вы вряд ли что-то испортите, используя vt100.

Многие люди используют обнаружение терминала в личных сценариях инициализации, чтобы оптимизировать взаимодействие с пользователем, в зависимости от того, как они входят на сервер. Например, установите простой PS1, если вы используете vt100, используйте цвет и динамические переменные при использовании bash в xterm.

Удачи в ваших исследованиях.

Тим Кеннеди
источник
3
@intrpc Обратите внимание, что довольно редко нужно менять TERMпеременную; это в основном необходимо, когда вы входите в более старую систему, которая не знает о названии нового терминала (и за последние 15 лет было не так много новых типов терминалов, большинство эмуляторов терминалов именуют себя так же xterm). TERMЭто то, с чем, как полагают, программы терминального типа, это не меняет того, чем на самом деле является терминал.
Жиль "ТАК - перестань быть злым"
9

Вы недоразумение.

Ваша консоль, или терминал, или экземпляр PuTTY на стороне LOCAL - это настоящий «эмулятор терминала», хотя в настоящее время мы просто сокращаем его до «терминалов». Использование происходит из-за того, что люди фактически использовали терминалы монитора и клавиатуры для входа на сервер мэйнфреймов, а не с использованием нескольких консолей и графических пользовательских сред.

Переменная $ TERM просто сообщает удаленной системе, какие управляющие коды ваш терминал будет понимать при отправке (например, для создания текстовых меню или чего-либо, основанного на libncurses).

Я не уверен, чего именно вы хотите достичь, но изменение $ TERM, вероятно, не поможет.

Shadur
источник
Спасибо @Shadur, это полезно. Я хотел бы включить поддержку большего количества цветов. У меня проблемы с экранированием символов, как я объясняю в обновлении в этом вопросе . В случае, если это имеет значение, обе машины / системы являются современными ( Ubuntu 11.10на моей локальной машине и Red Hat Enterprise Linux Server release 5.4 (Tikanga)на удаленной машине)
Амелио Васкес-Рейна
Извините, ссылка была на неправильный вопрос. Я только что отредактировал мой комментарий выше.
Амелио Васкес-Рейна
Тогда ваша проблема по-прежнему не в переменной TERM, потому что мое окно gnome-терминала, SSHed для удаленного сервера со значением $ TERM xterm, не имеет проблем с отображением цветов ANSI. Возможно, будет лучше, если вы объясните свою проблему, а не спросите, как реализовать то, что, по вашему мнению, должно быть решением.
Шадур
Спасибо, но я не сказал, что «моя проблема» была $TERMпеременной. Кроме того, я не задаю этот вопрос с единственной целью найти решение другой проблемы / вопроса. Во всяком случае, мой другой вопрос мотивировал этот вопрос. Наконец, я не думаю, что есть что-то плохое в надежде узнать больше о том, как работают эмуляторы терминала, задавая этот вопрос.
Амелио Васкес-Рейна
Кстати, не поймите меня неправильно, я ценю ваш совет и, как я уже говорил ранее, ваш ответ помог мне лучше понять эмуляторы терминала.
Амелио Васкес-Рейна