Gnome-Terminal
為什麼 xterm 顯示 256 色(不是 xterm-256color)?
有人可以解釋一下嗎?我正在使用
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
。
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 種以上的顏色。