相关疑难解决方法(0)

TERM 环境变量默认在哪里设置?

当我在桌面 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)。

shell colors bash terminal environment-variables

37
推荐指数
2
解决办法
6万
查看次数

如何在 FreeBSD 上使用 terminfo 条目?

在我的本地 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 的目的)TERMxterm-256color

freebsd ncurses terminfo

8
推荐指数
1
解决办法
3117
查看次数

$TERM 对 emacs 的 ansi-term 的正确值是多少,尤其是在 SSH 之后 'eterm-color' 不可用的情况下?

我目前设置$TERMxterm-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 登录的大多数机器上不可用。

.bashrcUbuntu 中的默认值检查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 识别相关转义码并设置标题的黑客,或者只是丢弃它们?

terminal emacs xterm ansi-term

7
推荐指数
1
解决办法
4789
查看次数

使用 256 色时的粗体文本

我在 Mutt 中配置颜色,但我认为我的问题是 linux 终端的普遍问题。

对于 16 种预定义颜色(例如red),我可以通过指定使其加粗brightred

但是,当使用 256 色(例如color208)时,没有brightcolor208. 我在 mutt 中有以下颜色主题:

color index color208 color236 ~T
Run Code Online (Sandbox Code Playgroud)

如何使 color208 加粗(亮)?

colors terminal mutt

6
推荐指数
2
解决办法
4684
查看次数