Gnome-Terminal riporta $ TERM come `xterm`


21

Su un'installazione pulita di Ubuntu 12.10, il terminale gnome predefinito sta segnalando $ TERM come xterm dove dovrebbe riportare davvero xterm-256color. Qual è il modo migliore per cambiarlo? Sto evitando di metterlo nel mio .bashrc perché questo sta solo chiedendo problemi.


2
Vuoi spiegare perché xterm è sbagliato? Dopo tutto abbiamo tutti xterm. Oltre a ciò: ti interessa anche spiegare perché metterlo a bashrc richiede problemi?
Rinzwind,

4
xtermè sbagliato perché la maggior parte delle applicazioni non funzionerà in modalità 256 colori a meno che non sia xterm-256coloro screen-256color(vim e tmux sono quelli principali a cui tengo). Come @Freddy, preferirei non impostarli nel mio profilo shell, perché potrei collegarmi da un diverso tipo di terminale su SSH, e perché è davvero compito dell'emulatore di terminale impostare questo. Sono sorpreso che gnome-terminal non fornisca più emulazioni.
Jim Stewart,

3
vte-0.40 (che apparirà probabilmente in Ubuntu 15.10) ha cambiato l'impostazione predefinita xterm-256colors.
egmont,

Risposte:


17

Ti è stato consigliato di non modificare gli script di avvio, in particolare ~/.bashrc. Qualsiasi "rilevamento di terminali" che utilizza corrente $TERMo $COLORTERMin ~/.profileè semplicemente una supposizione e può, come hai detto, causare problemi quando si utilizzano altri terminali (ad esempio Putty o Xterm). L'emulatore di terminale dovrebbe essere impostato $TERMe questo non dovrebbe essere modificato all'interno della shell.

Il terminale Gnome, AFAIK, non offre una configurazione per cambiarla TERM, ma ti permette di cambiare il tuo comando di avvio, e questo è tutto ciò di cui hai bisogno. Ecco il trucco:

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

Quindi utilizzare il seguente comando:

env TERM=xterm-256color /bin/bash

Sostituisci semplicemente /bin/bashcon la tua shell preferita se è diversa. E no, non è possibile utilizzare "$SHELL"in quella riga per il rilevamento automatico della shell;) È necessario codificarlo


C'è un'opzione in quelle impostazioni a "Quando il comando termina:". Le opzioni sono "Esci dal terminale", "riavvia il comando" e "tieni il terminale aperto". Quale dovrei selezionare?
Caleb Jay,

@CalebJay: qualunque cosa tu preferisca, quell'opzione non è correlata ai colori dei terminali. Cosa fare quando termina il comando è puramente una questione di preferenza.
MestreLion,

12

Per il collegamento con un terminale che non è in grado di eseguire 256 colori.

Sarebbe molto meglio rilevare il terminale specificamente con $COLORTERM. Cerca gnome-terminal, xfce4-terminal, ecc., Quindi imposta la $TERMvariabile su xterm-256color.

Lo faccio con:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi

4
Basta essere consapevoli del fatto che il Terminale Gnome dalla 3.13 in poi non è COLORTERMpiù impostato .
MestreLion,

2
Per le versioni che non sono più impostate, COLORTERMpuoi fare affidamento VTE_VERSION.
egmont,

6

Mentre è vero che terminfo ha xterm + 256color ( /usr/share/terminfo/x/xterm+256color), termcap ha solo xterm ( /usr/share/vte/termcap/xterm), quindi $TERMnon è consigliabile cambiare .

Comunque, $TERMnon è impostato da gnome-terminal, ma da vte. Il valore predefinito per quella variabile di ambiente può essere modificato al momento della compilazione (fornendo un'opzione per lo script di configurazione) o chiamando la vte_pty_set_term()funzione. Osservando le fonti di gnome-terminal, vedo che vte_pty_set_termnon viene mai chiamato, quindi posso dire che non ci sono modi per modificare $TERMmodificando le impostazioni di gnome-terminal.

Quello che devi fare è inserire il seguente codice nel tuo ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi

==è una sintassi solo bash, non usarla per i frammenti che devono essere forniti da sh(come nel caso dei ~/.profileDE). Inoltre, la sintassi "x $ .." non è necessaria poiché si sta citando correttamente l'espansione var.
MestreLion,

@MestreLion: sentiti libero di modificare la mia domanda.
Andrea Corbellini,

Ho provato, ma AU richiede che le modifiche
superino i
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.