我使用的是哪種終端類型?
我已經在 Ubuntu 12.04 和 Debian 7 上對此進行了測試。當我這樣做時
echo $TERM
我明白了
xterm
但是,如果我使用下拉菜單“幫助”>“關於”,那麼它會顯示
gnome terminal 3.4.1.1
。這是否意味著我只使用 gnome 終端?還是只是xterm?還是 gnome-terminal 是 xterm 的擴展?我很困惑。
是
$TERM
為了什麼?該
$TERM
變數供應用程序使用,以利用該終端的功能。例如,如果一個程序想要顯示彩色文本,它必須首先確定您使用的終端是否支持彩色文本,然後如果支持,如何顯示彩色文本。
其工作方式是系統保留一個已知終端及其功能的庫。在大多數係統上,它都在
/usr/share/terminfo
(還有 termcap,但它是遺留的,不再使用了)。因此,假設您有一個想要顯示紅色文本的程序。它基本上呼叫了 terminfo 庫,上面寫著“給我必須為 xterm 終端發送紅色文本的字節序列”。然後它只需要這些字節並將它們列印出來。
你可以自己試試這個
tput setf 4; echo hi
。這將獲得setf
terminfo 能力並將其傳遞給 的參數4
,這是您想要的顏色。為什麼 gnome 終端自己說謊:
現在假設您有一些剛剛發布的閃亮的新終端仿真器,而係統的 terminfo 庫還沒有定義它。當你的應用程序去查找如何做某事時,它會失敗,因為終端是未知的。
你的終端解決這個問題的方法是謊報它是誰。所以你的 gnome 終端說“我是 xterm ”。
Xterm 是一個非常基本的終端,自 X11 誕生以來就一直存在,因此大多數終端仿真器都支持它所支持的東西。因此,通過 gnome 終端說它是一個 xterm,它更有可能在 terminfo 庫中有一個定義。
謊報終端類型的缺點是終端實際上可能比 xterm 支持更多(例如,許多新終端支持 256 色,而舊終端僅支持 16 色)。所以你有一個權衡,獲得更多的功能,或者有更多的兼容性。大多數終端會選擇更多的兼容性,因此選擇將自己宣傳為
xterm
.如果你想覆蓋它,許多終端會提供一些配置行為的方法。但你也可以這樣做
export TERM=gnome-terminal
。