Чому 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 кольорів, і ви зможете викликати це, надіславши йому відповідні послідовності втечі. Але поки ви TERMвстановили xterm, програми, які ви запускаєте, будуть вірити, що ви говорите їм, що вони працюють у восьмиколірному терміналі, і тому вони обмежуватимуть свої запити (послідовності виходу) до цих можливостей . Вам потрібно встановити , TERMщоб xterm-256color, не для того, щобgnome-terminalдля відображення 256 кольорів, але сказати програми , як grepі lsдля попросити його , щоб використовувати більше 8 кольорів.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.