Gnome-Terminal 报告 $TERM 为 `xterm`

Fre*_*ddy 22 gnome-terminal

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

Mes*_*ion 17

建议您不要更改启动脚本,特别是~/.bashrc. 任何使用 current$TERM$COLORTERMin 的“终端检测”~/.profile都只是一种猜测,正如您所说,在使用其他终端(例如,Putty 或 xterm)时可能会导致麻烦。终端仿真器应该集$TERM,这应该 被从外壳内改变。

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

Profile Preferences => Title and Command => Run a custom command instead of my shell
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令:

env TERM=xterm-256color /bin/bash
Run Code Online (Sandbox Code Playgroud)

/bin/bash如果不同,只需更换您喜欢的外壳。不,您不能"$SHELL"在该行中使用 shell 自动检测;) 您必须对其进行硬编码


小智 12

用于连接不能做 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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,从 3.13 开始,Gnome 终端不再设置`COLORTERM`。 (5认同)
  • 对于不再设置 `COLORTERM` 的版本,你可以依赖 `VTE_VERSION`。 (3认同)

And*_*ini 6

虽然 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从未被调用,所以我可以说没有办法$TERM通过编辑 gnome-terminal 的设置来修改。

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

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi
Run Code Online (Sandbox Code Playgroud)