O Gnome-Terminal relata que $ TERM é `xterm`

21

Em uma instalação limpa do Ubuntu 12.10, o terminal-gnome padrão está relatando que $ TERM é xterm, onde deveria estar realmente relatando xterm-256color. Qual é a melhor maneira de mudar isso? Estou evitando colocar isso no meu .bashrc, pois isso está apenas causando problemas.

Freddy
fonte
2
Gostaria de explicar por que o xterm está errado? Afaik todos nós temos xterm. Além disso: também se preocupe em explicar por que colocar isso no bashrc está causando problemas?
Rinzwind
4
xtermestá errado porque a maioria dos aplicativos não funciona no modo de 256 cores a menos que seja xterm-256colorou screen-256color(vim e tmux são os principais que me interessam). Como o @Freddy, eu preferiria não defini-los no meu perfil de shell, porque posso estar conectando a partir de um tipo de terminal diferente pelo SSH e porque é realmente o trabalho do emulador de terminal definir isso. Estou surpreso que o gnome-terminal não forneça várias emulações.
Jim Stewart
3
vte-0.40 (que provavelmente aparecerá no Ubuntu 15.10) mudou o padrão para xterm-256colors.
precisa

Respostas:

17

Você foi aconselhado a não alterar seus scripts de inicialização, especialmente ~/.bashrc. Qualquer "detecção de terminal" usando corrente $TERMou $COLORTERMin ~/.profileé apenas um palpite e pode, como você disse, causar problemas ao usar outros terminais (por exemplo, Putty ou xterm). O emulador de terminal deve ser configurado $TERMe isso não deve ser alterado de dentro do shell.

O terminal Gnome, AFAIK, não oferece uma configuração para alterar sua TERM, mas permite alterar seu comando de inicialização, e isso é tudo que você precisa. Aqui está o truque:

Profile Preferences => Title and Command => Run a custom command instead of my shell

Em seguida, use o seguinte comando:

env TERM=xterm-256color /bin/bash

Apenas substitua /bin/bashpelo seu shell preferido, se for diferente. E não, você não pode usar "$SHELL"nessa linha para detecção automática de shell;) Você precisa codificá-lo

MestreLion
fonte
Há uma opção nessas configurações para "Quando o comando sai:". As opções são "Sair do terminal", "reiniciar o comando" e "mantenha o terminal aberto". Qual devo selecionar?
Caleb Jay
@ CalebJay: o que você preferir, essa opção não está relacionada às cores dos terminais. O que fazer quando o comando termina é puramente uma questão de preferência.
MestreLion 23/04
12

Para conectar com um terminal que não é capaz de executar 256 cores.

Seria muito melhor detectar o terminal especificamente com $COLORTERM. Olhar para o Gnome-terminal, xfce4-terminal, etc, e , em seguida, definir a $TERMvariável para xterm-256color.

Eu faço isso com:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi
Jordânia
fonte
4
Esteja ciente de que o Terminal Gnome a partir de 3.13 em diante não está COLORTERMmais configurado .
MestreLion 29/01
2
Para versões que não são mais definidas, COLORTERMvocê pode confiar VTE_VERSION.
precisa saber é
6

Embora seja verdade que terminfo possui xterm + 256color ( /usr/share/terminfo/x/xterm+256color), termcap possui apenas xterm ( /usr/share/vte/termcap/xterm), portanto, mudar $TERMnão deve ser aconselhável.

De qualquer forma, $TERMnão é definido pelo gnome-terminal, mas pelo vte. O valor padrão para essa variável de ambiente pode ser alterado no tempo de compilação (dando uma opção para o script configure) ou chamando a vte_pty_set_term()função Observando as fontes do gnome-terminal, vejo que isso vte_pty_set_termnunca é chamado, então posso dizer que não há maneiras de modificar $TERMeditando as configurações do gnome-terminal.

O que você precisa fazer é colocar o seguinte pedaço de código no seu ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi
Andrea Corbellini
fonte
==é uma sintaxe apenas de bash, não a use para trechos destinados a serem originados por sh(como é o caso ~/.profilenos DEs). Além disso, a sintaxe "x $ .." não é necessária, pois você está citando corretamente a expansão var.
MestreLion 28/01
@MestreLion: fique à vontade para editar minha pergunta.
Andrea Corbellini
Eu tentei, mas UA exige mudanças para ser mais de 6 caracteres, daí o comentário
MestreLion