当我在桌面 GUI 中使用 GNOME 终端模拟器打开终端窗口时,shell TERM 环境变量默认为值xterm
。
如果我使用CTL+ ALT+F1切换到控制台TTY窗口和echo $TERM
的值被设定为linux
。
我询问的动机是在我的~/.bashrc
文件中使用一个变量来确定是否提供了彩色外壳或只是老式的单色。
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
Run Code Online (Sandbox Code Playgroud)
如果我键入,则在控制台外壳和 Gnome 终端仿真器外壳中
export TERM=xterm-color
source /.bashrc
Run Code Online (Sandbox Code Playgroud)
两个外壳都更改为颜色模式(我希望两者都发生)。
请在哪里TERM
设置默认值,如果可能,更改默认值的最佳位置在哪里?终端仿真器 GUI 中似乎没有任何内容可以选择或设置默认的 TERM 值。
我确实考虑过将这一行添加export TERM=xterm-color
到我的~/.bashrc
文件顶部,但我的直觉告诉这不是最好的解决方案,而且我的 Google 搜索还没有让我得到一个好的答案。
我正在运行 Ubuntu 15.04 桌面版(基于 Debian)。
在我的本地 Linux 机器上,我使用的是termite (VTE-based)。它带有自己的terminfo文件(xterm-termite
),默认情况下不随 ncurses 一起分发。
我尝试连接到远程 FreeBSD 服务器。不幸的是,FreeBSD 默认只使用旧的 termcap 格式。我一直无法找到将 terminfo 转换为 termcap 的方法。因此,虽然我可以编译包含来自端口 ( devel/ncurses
) 的terminfo 支持的 ncurses 版本,但默认情况下,ncurses 应用程序将链接到系统提供的库。这会导致应用程序无法启动:
$ echo $TERM
xterm-termite
$ toe | grep termite
xterm-termite VTE-based terminal
$ tmux
open terminal failed: can't find terminfo database
$ htop
Error opening terminal: xterm-termite.
Run Code Online (Sandbox Code Playgroud)
(toe
列出 terminfo 条目)
如何让 FreeBSD 默认使用 terminfo,或者强制应用程序使用端口提供的 ncurses lib,或者至少将 terminfo 转换为 termcap 数据?
(我知道像设置为一个安全值之类的变通方法,但我认为这违背了 terminfo 的目的)TERM
xterm-256color
我目前设置$TERM
为xterm-256color
:
if [[ -n "$EMACS" ]]; then
export TERM=xterm-256color
alias emacs="emacsclient --no-wait"
export EDITOR="emacsclient --no-wait"
export VISUAL="emacsclient"
fi
Run Code Online (Sandbox Code Playgroud)
我曾经将它设置为eterm-color
,但问题是这种终端类型在我通过 SSH 登录的大多数机器上不可用。
.bashrc
Ubuntu 中的默认值检查TERM
变量是否以开头xterm-
,在这种情况下,它会尝试设置窗口标题:
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Run Code Online (Sandbox Code Playgroud)
问题是\[\e]0;
一点。它应该由 xterm 兼容的终端模拟器解析,但 emacs (ansi-term) 不这样做。其结果是这样的终端:
0;user@host: ~user@host:~$
Run Code Online (Sandbox Code Playgroud)
readline
当输入的文本大于终端的宽度时,它也会使用,破坏一些应用程序。
因为eterm-color
在某些远程主机上不可用(而且我也无法安装它),将其设置为该值会使less
.
有什么我可以使用的技巧,例如大多数发行版附带的另一种终端类型,或者使 ansi-term 识别相关转义码并设置标题的黑客,或者只是丢弃它们?
我在 Mutt 中配置颜色,但我认为我的问题是 linux 终端的普遍问题。
对于 16 种预定义颜色(例如red
),我可以通过指定使其加粗brightred
但是,当使用 256 色(例如color208
)时,没有brightcolor208
. 我在 mutt 中有以下颜色主题:
color index color208 color236 ~T
Run Code Online (Sandbox Code Playgroud)
如何使 color208 加粗(亮)?