1

Мой конфигурационный файл ssh имеет env, установленный как:

AcceptEnv LANG LC_*

Я немного сбит с толку, когда, когда я через ssh через некоторых клиентов, моя переменная TERM устанавливается как xterm256-color, а для других клиентов TERM устанавливается как vt100. Мои .bashrc и /etc /profile не имеют ничего, что устанавливало бы переменную TERM.

2 ответа2

2

$TERM особенный - он отправляется не как переменная окружения (что в любом случае не имеет смысла для не-Unix-систем), а скорее как специальное поле "тип терминала" при установлении псевдо-терминального канала, согласно RFC 4254 § 6.2.

6.2. Запрос псевдо-терминала

Псевдотерминал может быть выделен для сеанса путем отправки следующего сообщения.

byte      SSH_MSG_CHANNEL_REQUEST
uint32    recipient channel
string    "pty-req"
boolean   want_reply
string    TERM environment variable value (e.g., vt100)
uint32    terminal width, characters (e.g., 80)
uint32    terminal height, rows (e.g., 24)
uint32    terminal width, pixels (e.g., 640)
uint32    terminal height, pixels (e.g., 480)
string    encoded terminal modes
1

$TERM устанавливается терминалом, то есть родительским процессом оболочки, которую вы используете локально. Он используется приложениями для определения возможностей терминала, например, поддерживает ли он цвет. Очень полезно перенаправить это на любые другие хосты, к которым вы подключаетесь, так как в противном случае они потеряли бы эту информацию о возможностях терминала конечного пользователя.

Смотрите, например, Запретить SSH-клиенту передавать переменную среды TERM на сервер?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .