当前位置: 首页>>技术教程>>正文


Gnome-Terminal 报告 $TERM 为 `xterm`

问题描述

在 Ubuntu 12.10 的全新安装中,默认的 gnome-terminal 将 $TERM 报告为 xterm,而实际上它应该报告 xterm-256color。改变这种情况的最佳方法是什么?我避免把它放在我的 .bashrc 中,因为那只是自找麻烦。

最佳方法

建议您不要更改启动脚本,特别是 ~/.bashrc 。任何在 ~/.profile 中使用当前 $TERM$COLORTERM 的 “terminal detection” 都只是一种猜测,正如您所说,在使用其他终端(例如,Putty 或 xterm)时可能会导致问题。终端仿真器应该设置 $TERM ,并且不应在 shell 内更改它。

Gnome 终端 AFAIK 不提供更改其 TERM 的配置,但它确实允许您更改启动命令,这就是您所需要的。这是诀窍:

Profile Preferences => Title and Command => Run a custom command instead of my shell

然后使用以下命令:

env TERM=xterm-256color /bin/bash

如果不同,只需将 /bin/bash 替换为您喜欢的 shell。不,您不能在该行中将 "$SHELL" 用于 shell auto-detection 😉 您必须使用 hard-code

次佳方法

用于连接不能做 256 色的终端。

$COLORTERM 专门检测终端会好得多。查找 gnome-terminal、xfce4-terminal 等,然后将 $TERM 变量设置为 xterm-256color

我这样做:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi

第三种方法

虽然 terminfo 确实有 xterm+256color ( /usr/share/terminfo/x/xterm+256color ),但 termcap 只有 xterm ( /usr/share/vte/termcap/xterm ),所以不建议更改 $TERM

无论如何,$TERM 不是由 gnome-terminal 设置的,而是由 vte 设置的。该环境变量的默认值可以在编译时(为配置脚本提供一个选项)或通过调用 vte_pty_set_term() 函数来更改。查看 gnome-terminal 的来源,我看到 vte_pty_set_term 永远不会被调用,所以我可以说没有办法通过编辑 gnome-terminal 的设置来修改 $TERM

您需要做的是将以下代码放在您的 ~/.profile 中:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12125.html,未经允许,请勿转载。