Perché xterm visualizza 256 colori (non xterm-256color)?


11

Qualcuno potrebbe spiegarlo? Sto usando gnome-terminal. Innanzitutto, alcune informazioni:

# echo $TERM
xterm

# infocmp xterm
Reconstructed via infocmp from file: /lib/terminfo/x/xterm
colors#8, cols#80, it#8, lines#24, pairs#64

# tput colors
8

Ho scritto un semplice script per creare codici per un set esteso di colori:

# Output file (current directory) and text.
OFILE='xterm256_colors_test.sh'
OFILE_COLORS='terminal_256_colors'
OTEXT='Sed ut perspiciatis unde omnis iste natus error sit voluptatem...'

# Clearing the contents from previous runs.
if [ -e $OFILE ] || [ -e $OFILE_COLORS ]
then
  > $OFILE
  > $OFILE_COLORS
fi

# Bang!
echo -e '#!/bin/bash\n' | tee --append $OFILE $OFILE_COLORS &> /dev/null
echo -e "\necho -e \"" | tee --append $OFILE &> /dev/null

# \x1b is a control character changing behaviour of the shell.
# It is also the <Ctrl+V><Esc> sequence.
for i in {016..255}; do
  echo -e "\x1b[38;5;${i}m $OTEXT $i \x1b[0m" >> $OFILE
  echo -e "color${i}=\"\[\033[38;5;${i}m\]\"" >> $OFILE_COLORS
done

# End of echo.
echo '"' | tee --append $OFILE &> /dev/null

# The file should be executable.
chmod +x $OFILE

Nonostante l' xtermemulatore di terminale di base quando eseguo lo script generato posso vedere tutti i 240 colori. Perché? Ho pensato di passare $TERMal xterm-256colorprimo.

Risposte:


18

La TERMvariabile di ambiente è un modo che voi, l'utente, può dire programmi (ad esempio, emacs, grep, less, ls, e vim) che tipo di terminale sono in esecuzione, in modo sapranno i suoi parametri, tra cui quello che le capacità che ha e quale sequenze di escape essi è necessario emettere per accedervi. Questo esiste perché è troppo difficile, in generale, per il software determinarlo da solo (ed era praticamente impossibile quando gli utenti si interfacciavano con i computer attraverso terminali esterni e collegati al computer solo tramite un cavo dati).

gnome-terminalè un programma che fornisce all'utente servizi simili a terminali e i programmi che l'utente esegue all'interno del terminale.  gnome-terminalpuò essere a conoscenza delle variabili di ambiente che sono state impostate nel suo ambiente, prima che fosse invocato ( DISPLAYessendo l'esempio ovvio), ma non è a conoscenza delle variabili di ambiente che sono impostate nei processi che sono in esecuzione al suo interno.

Quindi, gnome-terminalha qualunque capacità abbia. Potrebbe essere possibile regolarli / vincolarli esternamente, ad esempio tramite opzioni della riga di comando, l'ambiente preesistente, i file di configurazione e le finestre di dialogo nel riquadro della finestra, ma non modificando TERMla shell nella finestra. Se è in grado di visualizzare 256 colori, è in grado di visualizzare 256 colori e sarai in grado di farlo inviandogli le sequenze di escape appropriate. Ma, finché hai TERMimpostato xterm, i programmi che eseguirai crederanno che stai dicendo loro che sono in esecuzione in un terminale con capacità di otto colori, e quindi limiteranno le loro richieste (sequenze di escape) a quelle capacità . È necessario impostare TERMsu xterm-256color, non abilitaregnome-terminalper visualizzare 256 colori, ma a dire programmi come grepe lsper chiedere in modo da utilizzare più di 8 colori.


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.