Terminal

我使用的是哪種終端類型?

  • February 23, 2022

我已經在 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。這將獲得setfterminfo 能力並將其傳遞給 的參數4,這是您想要的顏色。


為什麼 gnome 終端自己說謊:

現在假設您有一些剛剛發布的閃亮的新終端仿真器,而係統的 terminfo 庫還沒有定義它。當你的應用程序去查找如何做某事時,它會失敗,因為終端是未知的。

你的終端解決這個問題的方法是謊報它是誰。所以你的 gnome 終端說“我是 xterm ”。

Xterm 是一個非常基本的終端,自 X11 誕生以來就一直存在,因此大多數終端仿真器都支持它所支持的東西。因此,通過 gnome 終端說它是一個 xterm,它更有可能在 terminfo 庫中有一個定義。

謊報終端類型的缺點是終端實際上可能比 xterm 支持更多(例如,許多新終端支持 256 色,而舊終端僅支持 16 色)。所以你有一個權衡,獲得更多的功能,或者有更多的兼容性。大多數終端會選擇更多的兼容性,因此選擇將自己宣傳為xterm.

如果你想覆蓋它,許多終端會提供一些配置行為的方法。但你也可以這樣做export TERM=gnome-terminal

引用自:https://unix.stackexchange.com/questions/93376