我的 .bashrc 中有
export TERM=xterm-256color
但这会导致 Linux 控制台 (++) 中的所有彩色文本(ls --color,在 vim 等中)Ctrl闪烁。AltF1
那么是否有可能识别我在哪个终端(Linux 控制台或伪 tty),以便我可以导出具有有效值的 TERM 变量?
[编辑]
我只找到了替代解决方案:
对于 vim 用户(在 .vimrc 中)
set t_Co=256
或 .Xdefaults 中的 xterm (之后 xrdb -load .Xdefaults)
XTerm*termName: xterm-256color
或屏幕 (.screenrc)
term screen-256color
答案1
尝试TERM
根本不导出变量。这应该由终端本身设置为适当的值。 Linux 控制台应将其设置为linux
,而各种基于 X 的终端程序可能会使用您设置的值。
仅当默认值不起作用或无法通过 SSH 连接到无法识别您的环境的位置时,您才应将其设置为覆盖。
答案2
控制台 $TERM 是linux
,[1] 因此您可以构建一个测试,如下所示:
if [ "$TERM" = "linux" ]; then
...
作为迦勒笔记,将环境变量 TERM 设置为您想要模拟的终端类型并不是一个好主意。
看http://tldp.org/HOWTO/Text-Terminal-HOWTO-10.html#term_not_for_emulation详情
[1] 自内核版本 1.3.2 起,控制台的内核默认值为 TERM=linux。