Bash

PS1 提示在本地和遠端控制台上顯示不同

  • November 9, 2014

這是我的 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"

引用自:https://unix.stackexchange.com/questions/166898