这是我的 PS1 提示:
export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
这表明远程完美(SSH) 控制台 (PTS):
luis@Chomsky:~$
无法显示,但完整提示是紫色的。
问题是:在本地(TTY),它显示出一些丑陋:
;luis@Chomsky: ~luis@Chomsky:~$
也无法显示,但第一部分(从“;”到“~”)没有颜色,其余部分是紫色的。
Additional data:
- 使用 Bash 外壳:
luis@Chomsky:~$ ps -p$$ -ocmd= -bash
- 在 Ubuntu Desktop 和 Ubuntu Server v14.04 LTS 中进行了测试。
- (至少)在便携式 ASUS EEE PC 和 VirtualBox 虚拟机上进行了测试。
- 我用来
export PS1=
在 处添加行~/.bashrc
。
我想知道为什么会发生这种情况以及我该怎么办解决这个问题。
谢谢。
答案1
控制序列\e]0;TITLE\a
被许多终端仿真器识别;它设置窗口标题。 Linux 控制台无法识别此控制序列(无论如何它都没有标题):它看到\e]0
,决定“我不知道这意味着什么,所以我会忽略它”,并打印以下文本。
您需要根据当前终端以不同方式设置提示。
title_text='\u@\h: \w'
set_title=
case $TERM in
dtterm|rxvt|[Ek]term|*xterm) set_title='\[\e]0;'"$title_text"'\a\]';;
screen) set_title='\[\ek'"$title_text"'\e\\\]';;
esac
PS1="$set_title$PS1"