Почему xterm отображает 256 цветов (не xterm-256color)?


11

Может кто-нибудь объяснить это? Я использую gnome-terminal. Сначала немного информации:

# 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

Я написал простой скрипт для создания кодов для расширенного набора цветов:

# 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

Несмотря на базовый xtermэмулятор терминала, когда я запускаю сгенерированный скрипт, я вижу все 240 цветов. Почему? Я думал, что я должен измениться $TERMв xterm-256colorпервую очередь.

Ответы:


18

TERMПеременная среды является способом , что вы, пользователь может сказать программ (например, emacs, grep, less, ls, и vim) , какой терминал они работают на, так что они будут знать его параметры, в том числе , какие возможности он имеет и какие управляющие последовательности они нужно оформить для доступа к ним. Это происходит потому, что в общем случае программному обеспечению слишком сложно определить это для себя (и это было практически невозможно, когда пользователи взаимодействовали с компьютерами через внешние терминалы и подключались к компьютеру только с помощью кабеля для передачи данных).

gnome-terminalэто программа, которая предоставляет подобные терминалу услуги пользователю и программам, которые пользователь запускает в терминале.  gnome-terminalможет знать о переменных среды, которые были установлены в его среде, до того, как она была вызвана ( DISPLAYэто очевидный пример), но она не знает переменных среды, которые установлены в процессах, которые под ней работают.

Итак, gnome-terminalимеет все возможности. Может быть возможно настроить / ограничить их внешне, например, с помощью параметров командной строки, существующей среды, файлов конфигурации и диалоговых окон в рамке окна, но не путем изменения TERMв оболочке в окне. Если он способен отображать 256 цветов, то он способен отображать 256 цветов, и вы сможете заставить его это сделать, отправив ему соответствующие escape-последовательности. Но, пока вы TERMустановили xterm, программы, которые вы запускаете, будут полагать, что вы говорите им, что они работают в терминале с поддержкой восьми цветов, и поэтому они будут ограничивать свои запросы (escape-последовательности) этими возможностями . Вам нужно установить, TERMчтобы xterm-256colorне включатьgnome-terminalдля отображения 256 цветов, но сказать программы , как grepи lsдля попросить его , чтобы использовать более 8 цветов.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.