Warum zeigt xterm 256 Farben an (nicht xterm-256color)?

11

Könnte jemand das erklären? Ich benutze gnome-terminal. Zunächst einige Informationen:

# 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

Ich habe ein einfaches Skript geschrieben, um Codes für erweiterte Farben zu erstellen:

# 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

Trotz des grundlegenden xtermTerminalemulators kann ich beim Ausführen des generierten Skripts alle 240 Farben sehen. Warum? Ich dachte , ich ändern sollte , $TERMum xterm-256colorzuerst.

Kamil
quelle

Antworten:

18

Die TERMUmgebungsvariable ist eine Art und Weise , dass Sie, der Benutzer können Programme sagen (zB emacs, grep, less, ls, und vim) welche Art von Terminal laufen sie auf, so dass sie ihre Parameter wissen, einschließlich dessen , was Fähigkeiten hat und was Escape - Sequenzen sie müssen ausstellen, um auf sie zuzugreifen. Dies liegt daran, dass es für die Software im Allgemeinen zu schwierig ist, dies selbst zu bestimmen (und dies war praktisch unmöglich, wenn Benutzer über externe Terminals mit Computern verbunden waren und nur über ein Datenkabel mit dem Computer verbunden waren).

gnome-terminalist ein Programm, das dem Benutzer und den Programmen, die der Benutzer im Terminal ausführt, terminalähnliche Dienste bereitstellt.  gnome-terminalMöglicherweise sind Umgebungsvariablen bekannt, die in der Umgebung festgelegt wurden, bevor sie aufgerufen wurden (dies DISPLAYist das offensichtliche Beispiel), es sind jedoch keine Umgebungsvariablen bekannt, die in den Prozessen festgelegt sind, die unter der Umgebung ausgeführt werden.

Hat gnome-terminalalso alle Fähigkeiten, die es hat. Es kann möglich sein, diese extern anzupassen / einzuschränken, z. B. über Befehlszeilenoptionen, die bereits vorhandene Umgebung, Konfigurationsdateien und Dialogfelder im Fensterrahmen, jedoch nicht durch Ändern TERMder Shell im Fenster. Wenn es 256 Farben anzeigen kann, kann es 256 Farben anzeigen, und Sie können dies veranlassen, indem Sie ihm die entsprechenden Escape-Sequenzen senden. Solange Sie dies TERMfestgelegt haben xterm, glauben die von Ihnen ausgeführten Programme, dass Sie ihnen mitteilen, dass sie in einem Terminal mit acht Farben ausgeführt werden, und beschränken daher ihre Anforderungen (Escape-Sequenzen) auf diese Funktionen . Sie müssen festlegen , TERMum xterm-256colornicht zu ermöglichen ,gnome-terminal256 Farben anzuzeigen, aber Programme wie zu sagen grepund lszu bitten , mehr als 8 Farben zu verwenden.

G-Man sagt "Reinstate Monica"
quelle