Alterando emuladores de terminal

10

Eu tenho acesso ssh a uma máquina remota. Nesta máquina, se eu correr echo $TERM, entendo xterm.

Se eu quiser mudar meu emulador de terminal para outro emulador (supondo que ele esteja instalado na máquina remota), como eu faria isso?

Amelio Vazquez-Reina
fonte

Respostas:

15

O valor da variável de ambiente TERM é usado pelo servidor (nos sistemas operacionais derivados do sistema V ou BSD) para controlar como a entrada é reconhecida pelo sistema e quais recursos existem para saída. Alguns tipos de terminal são semelhantes o suficiente para que possam ser trocados enquanto ainda permanecem úteis, enquanto outros podem tornar o sistema inutilizável até que você abra uma nova conexão com um valor suportado para TERM. Por exemplo, de um sistema Linux para outro, você provavelmente experimentaria muito pouca diferença entre as configurações de vt100, vt220 e xterm. A maioria das diferenças estaria em como a saída é exibida e se cores ou fontes em negrito estão disponíveis para esse tipo de terminal. O banco de dados termcap lista todos os tipos de terminais, com seus vários recursos.

Contanto que você não mude para um tipo de terminal com o qual o teclado e a tela não sejam compatíveis, você ficará bem.

leia a página de manual para termo, e termcap, em seu sistema para obter mais informações.

Para alterar o tipo de terminal:

no bash:

export TERM=vt100

em bourne shell ou ksh:

TERM=vt100
export TERM

em csh ou tcsh:

setenv TERM vt100

vt100é um terminal bastante seguro para começar a jogar. é compatível com o xterm, mas não exibe cores ou fontes em negrito e pode não reconhecer as teclas F *, mas é improvável que você estrague tudo usando o vt100.

Muitas pessoas usam a detecção de terminal em scripts init pessoais para otimizar a experiência do usuário, dependendo de como estão se conectando ao servidor. Por exemplo, defina um PS1 simples, se você estiver usando o vt100, use variáveis ​​dinâmicas e de cores ao usar o bash em um xterm.

Boa sorte com sua pesquisa.

Tim Kennedy
fonte
3
@intrpc Observe que é muito raro precisar alterar a TERMvariável; é necessário principalmente quando você faz logon em um sistema mais antigo que não sabe o nome de um terminal mais novo (e não houve muitos tipos de terminal novos nos últimos 15 anos ou mais, a maioria dos emuladores de terminal se denominam como xterm). TERMé com o que os programas do tipo terminal acreditam que estão falando, não muda o que o terminal realmente é.
Gilles 'SO- stop be evil'
9

Você está entendendo mal.

Seu console ou terminal ou instância PuTTY no lado LOCAL é o "emulador de terminal" real, embora hoje em dia apenas reduzimos para "terminais". O uso é originário de quando as pessoas realmente usavam terminais de monitor e teclado para conectar-se a um servidor de mainframe em vez de usar vários consoles e ambientes gráficos de usuário.

A variável $ TERM simplesmente diz ao sistema remoto que tipo de códigos de controle o seu terminal entenderá quando os enviar (por exemplo, para gerar menus baseados em texto ou qualquer coisa baseada em libncurses).

Não tenho certeza do que exatamente você deseja realizar, mas alterar $ TERM provavelmente não ajudará.

Shadur
fonte
Obrigado @Shadur, isso é útil. Gostaria de ativar o suporte para mais cores. Estou tendo problemas com caracteres que escapam, como explico na atualização nesta pergunta . No caso é importante, ambas as máquinas / sistemas são modernos ( Ubuntu 11.10na minha máquina local e Red Hat Enterprise Linux Server release 5.4 (Tikanga)na máquina remota)
Amelio Vazquez-Reina
Desculpe, o link foi para a pergunta errada. Acabei de editar meu comentário acima.
Amelio Vazquez-Reina
Então seu problema ainda não é a variável TERM, porque minha janela do terminal do gnome, SSHed para um servidor remoto com o valor $ TERM de xterm, não tem problemas para renderizar cores ansi. Talvez seja melhor você explicar o seu problema do que perguntar como implementar o que você acha que deveria ser a solução.
Shadur 1/11/11
Obrigado, mas não disse que "meu problema" era a $TERMvariável. Além disso, não estou fazendo essa pergunta com o único objetivo de encontrar uma solução para um problema / pergunta diferente. Na verdade, minha outra pergunta motivou essa pergunta. Finalmente, não acho que exista algo errado na esperança de aprender mais sobre como os emuladores de terminal funcionam, fazendo esta pergunta.
Amelio Vazquez-Reina
A propósito, não me interpretem mal, agradeço seus conselhos e, como disse anteriormente, sua resposta me ajudou a entender melhor os emuladores de terminal.
Amelio Vazquez-Reina