Bash
PS1 提示在本地和遠端控制台上顯示不同
這是我的 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 Shell:
luis@Chomsky:~$ ps -p$$ -ocmd= -bash
- 在 Ubuntu Desktop 和 Ubuntu Server v14.04 LTS 中測試。
- 在攜帶式 ASUS EEE PC 和 VirtualBox 虛擬機上測試(至少)。
- 我用來
export PS1=
在~/.bashrc
.我想知道為什麼會發生這種情況以及我該如何解決。
謝謝。
控制序列
\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"