Dlaczego xterm wyświetla 256 kolorów (nie xterm-256color)?

11

Czy ktoś mógłby to wyjaśnić? Używam gnome-terminal. Po pierwsze, niektóre informacje:

# 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

Napisałem prosty skrypt do tworzenia kodów dla rozszerzonego zestawu kolorów:

# 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

Pomimo podstawowego xtermemulatora terminala, kiedy uruchamiam wygenerowany skrypt, widzę wszystkie 240 kolorów. Dlaczego? Myślałem, że powinienem zmienić $TERMna xterm-256colorpierwszy.

Kamil
źródło

Odpowiedzi:

18

TERMZmienna jest sposób, że użytkownik może powiedzieć programów (np emacs, grep, less, ls, i vim), jakiego rodzaju terminala są one uruchomione na tak będą wiedzieć swoje parametry, w tym Jakie możliwości ma i co sekwencje one trzeba wydać, aby uzyskać do nich dostęp. Dzieje się tak, ponieważ ogólnie rzecz biorąc, oprogramowanie jest zbyt trudne, aby samemu to ustalić (i było to prawie niemożliwe, gdy użytkownicy komunikowali się z komputerami za pośrednictwem terminali zewnętrznych i podłączonych do komputera wyłącznie kablem danych).

gnome-terminalto program, który zapewnia użytkownikowi usługi podobne do terminala oraz programy uruchamiane przez użytkownika w terminalu.  gnome-terminalmoże być świadomy zmiennych środowiskowych, które zostały ustawione w jego środowisku przed jego wywołaniem (co DISPLAYjest oczywistym przykładem), ale nie ma wiedzy o zmiennych środowiskowych ustawianych w procesach, które są w nim uruchomione.

gnome-terminalMa więc wszelkie możliwości. Może być możliwe dostosowanie / ograniczenie ich zewnętrznie, np. Poprzez opcje wiersza poleceń, istniejące wcześniej środowisko, pliki konfiguracyjne i okna dialogowe w ramce okna, ale nie przez zmianę TERMpowłoki w oknie. Jeśli jest w stanie wyświetlić 256 kolorów, to jest w stanie wyświetlić 256 kolorów, a będziesz w stanie to zrobić, wysyłając odpowiednie sekwencje specjalne. Ale tak długo, jak TERMsię xtermna to zdecydujesz, uruchomione programy będą wierzyć, że mówisz im, że działają w terminalu obsługującym osiem kolorów, a więc ograniczą swoje żądania (sekwencje specjalne) do tych możliwości . Musisz ustawić, TERMaby xterm-256colornie włączaćgnome-terminalaby wyświetlić 256 kolorów, ale powiedzieć programów jak grepi lsdo poprosić go użyć więcej niż 8 kolorów.

G-Man mówi „Przywróć Monikę”
źródło
Nieokreślone powiązanie: gdzie ustawiana jest domyślna zmienna środowiskowa TERM?
G-Man mówi „Przywróć Monikę”