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色すべてが表示されます。どうして?私は変更する必要があります考え$TERMxterm-256color最初に。

回答:


18

TERM環境変数を使用すると、ユーザーは、プログラムを伝えることができるという方法である(例えば、emacsgreplessls、とvim)どのような彼らは、そのパラメータを知っているので、彼らは何の能力、それが持っていると何を含め、上で実行されている端末のエスケープシーケンス彼らそれらにアクセスするには発行する必要があります。これは、ソフトウェアがこれを判断するのが一般的に難しいために存在します(ユーザーが外部にある端末を介してコンピューターとやり取りし、データケーブルでのみコンピューターに接続した場合は、ほとんど不可能でした)。

gnome-terminal端末のようなサービスをユーザーに提供するプログラムと、ユーザーが端末内で実行するプログラムです。  呼び出される前に(明確な例として)、その環境でgnome-terminal設定された環境変数を認識している可能性がありますが、そのDISPLAY下で実行されているプロセスで設定されている環境変数を認識していません。

だから、gnome-terminalそれが持っているどんな機能も持っています。たとえば、コマンドラインオプション、既存の環境、構成ファイル、ウィンドウフレームのダイアログなどを使用して、これらを外部から調整/制約することができますが、ウィンドウTERMのシェルで変更することはできません。256色を表示できる場合は、256色を表示できます。適切なエスケープシーケンスを送信することで、256色を表示できます。ただし、にTERM設定している限り、xterm実行するプログラムは、8色対応の端末で実行されていることをユーザーに通知していると考え 、要求(エスケープシーケンス)をそれらの機能に制限します。あなたは、設定する必要がありますTERMxterm-256color、有効にしませんgnome-terminal256色を表示するには、しかし、のようなプログラムを伝えるためにgreplsする尋ねる以上の8色を使用するように。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.