SSH TERM detection

1

Meu arquivo de configuração ssh aceita env configurado como:

AcceptEnv LANG LC_*

Eu estou um pouco confuso como quando eu ssh através de alguns clientes minha variável TERM é definida como xterm256-cor, e outros clientes TERM é definido como vt100. Meu .bashrc e / etc / profile não possuem nada que esteja configurando a variável TERM.

    
por marcwho 25.06.2014 / 15:05

2 respostas

2

$TERM é especial - não é enviado como uma variável de ambiente (o que não faria sentido para sistemas não-Unix), mas como um campo especial "tipo de terminal" ao estabelecer um canal pseudo-terminal, por RFC 4254 § 6.2 .

6.2. Requesting a Pseudo-Terminal

A pseudo-terminal can be allocated for the session by sending the following message.

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
    
por 25.06.2014 / 15:30
1

$TERM é definido pelo terminal , isto é, o processo pai do shell que você está executando localmente . Ele é usado por aplicativos para determinar quais são os recursos do terminal, por exemplo, se ele suporta cores. É muito útil encaminhá-lo para qualquer outro host ao qual você se conecte, pois, caso contrário, eles perderiam esse conhecimento das capacidades do terminal do usuário final.

Veja, por exemplo, Evitar que o cliente SSH passe pelo ambiente TERM variável para servidor?

    
por 25.06.2014 / 15:11