É correto definir a variável $ TERM manualmente?

10

Defino a $TERMvariável adicionando a linha XTerm*termName: xterm-256colorao meu .Xresourcesarquivo. Quando fiz isso, não sabia exatamente o que isso significava (eu estava seguindo um guia on-line para mudar a aparência xterm), mas agora li um pouco mais e estou preocupado se o que fiz foi errado. Especificamente, quero saber que há algo ruim na configuração $TERMmanual da variável e, no caso, como reverter meu erro.

Caso você precise, estou executando o Fedora 20 com xterm.

Santaru72
fonte
Esta é uma questão de programação genérica. Depende do que você estará fazendo. Se você pode considerar como um ambiente de área de trabalho e a ausência de conexões remotas, pode estar OK. Caso contrário, todos os casos possíveis deverão ser processados ​​com verificação de erros.
41754
@uprego Você poderia, por favor, falar sobre "ausência de conexões remotas"?
precisa saber é o seguinte
Você pode estar usando uma sessão permanente do tmux com a opção 256 cores, mas se você a anexar a partir de uma sessão ssh, os cenários possíveis serão ampliados demais para serem listados. Cada aplicativo teria ou não efeitos desejáveis, dependendo da capacidade de cada programador. Como @goldilocks aponta em sua resposta, não deve ser perigoso, mas há a diferença entre "não deveria ser" e "não pode ser".
41754
@uprego: Realisticamente, eu deveria ter dito "não posso", a menos que você conte a saída ilegível como "perigosa".
8118 goldilocks

Respostas:

7

Na maioria das vezes, você não deve definir TERMmanualmente. A variável é sempre definida automaticamente e há apenas um conjunto restrito de circunstâncias em que o valor padrão está incorreto.

O valor de TERMprecisa ser referenciado no banco de dados terminfo do sistema (ou para alguns sistemas antiquados, no banco de dados termcap ). Terminfo e Termcap mapeiam os tipos de terminal para a descrição dos recursos de terminal que os aplicativos usam. O valor de TERMé o tipo de terminal.

O principal motivo pelo qual você pode precisar mudar algumas vezes TERMé se você efetuar logon remotamente, quando a máquina local e a máquina remota tiverem bancos de dados de terminal diferentes.

Outro motivo, relacionado ao anterior, é que, às vezes, existem várias entradas semelhantes para um terminal, com recursos ligeiramente diferentes. Isso costuma acontecer principalmente quando um novo terminal é compatível com um terminal existente, mas possui mais recursos. Você pode escolher entre usar o nome tradicional, que todas as máquinas entendem, mas que anuncia apenas os recursos tradicionais, ou o nome mais recente, que anuncia todos os novos recursos, mas que algumas máquinas não entendem.

Um exemplo disso é o xterm com 16 cores vs xterm com 256 cores. Um xterm tradicional suporta apenas 16 cores, e é isso que o xtermbanco de dados do terminal especifica. Alterar a xtermentrada deixaria os usuários das versões mais recentes do xterm felizes, mas interromperia a configuração dos usuários das versões mais antigas do xterm que efetuam login remotamente. Mudar para um novo nome -  xterm-256color- fornece os recursos mais recentes sempre que disponíveis, mas não é reconhecido se você fizer logon remotamente em máquinas com um banco de dados de terminal mais antigo. Como não existe uma solução que possa satisfazer a todos, você tem uma escolha: fique com xterme não obtenha as 256 cores ou use as xterm-256colorque não funcionarem se você fizer login em máquinas remotas que não são compatíveis.

Deixar o valor padrão xterme definir o termNamerecurso como xterm-256color(o que faz com que a variável de ambiente TERMseja configurada com o mesmo valor) são, portanto, ambas as escolhas sensatas. Definir TERMvalores arbitrários não funcionaria, mas ambos xterme xterm-256colorfaz sentido.

Gilles 'SO- parar de ser mau'
fonte
3

Defino a variável $ TERM adicionando a linha XTerm * termName: xterm-256color ao meu arquivo .Xresources.

Tudo bem, desde que você esteja ciente do que fez; a maioria dos terminais GUI suporta isso.

Você também pode configurá-lo na linha de comando ou em um script

export TERM=xterm-256color

Isso se aplica apenas a esse terminal ou a filhos subsequentes.

Um padrão portátil seria justo xterm, o que significa suporte a 16 cores. Se você tiver 256 cores definidas e o seu terminal não suportar, a execução de aplicativos TUI com 256 cores parecerá estranha; você provavelmente notará imediatamente. Mas não deve ser perigoso.

Cachinhos Dourados
fonte
Então definir em XTerm*termName: xtermvez de XTerm*termName: xterm-256coloreu deveria ficar bem, certo?
precisa saber é o seguinte
Se é isso que você quer, não defina nada; xtermé o padrão para xterm;) mas significa 16 cores. O principal ponto de uso xterm-256coloré dizer aos aplicativos que o terminal suporta 256 cores . Se você não fizer isso, eles presumirão 16 cores.
8298 goldilocks