Mac OS X Lion 终端将命令提示符置于 PS1 环境变量的中间

Mac OS X Lion 终端将命令提示符置于 PS1 环境变量的中间

在我安装 Lion 之前,打开一个终端窗口,将光标放在提示符的末尾,如下所示:

Wed Aug 31{shirsch4@Susan-Hirschs-iMac}/projects/perl/perl/lib/Utils--><cursor>

现在,当我打开一个终端窗口时,光标会出现在提示符的中间某处,如下所示:

Wed Aug 31{shirsch4@Susan-Hirsch<cursor>-iMac}/projects/perl/perl/lib/Utils-->

有人知道我该如何纠正这个问题吗?

谢谢!

根据要求,以下是我对 PS1 的设置:

/etc/bashrc:PS1="\[\033[01;34m\]\d\[\033[00;36m\]{\u@\h}\[\033[00;35m\]\w\[\033[01;34m\]\[\033[001;34m\]-->"

答案1

导致这种情况的最常见错误是未在 PS1 中使用方括号括住非打印字符。任何非打印字符都必须括在“\[…\]”中,以告诉 bash 在测量提示符的长度时不要计算它们。

例如,我使用下面的命令~/.bashrc使提示符变为粗体:

PS1='\['$(tput bold)'\]'"$PS1"'\['$(tput sgr0)'\]'

每个转义序列都括在方括号中。(我使用它tput来生成代码,而不是像很多人那样对代码进行硬编码。这更具可移植性,并且使阅读和维护 shell 脚本更容易。)

但是,您发布的 PS1 似乎有正确的方括号。此外,如果我将我的 PS1 设置为与您的相同,则无法重现您报告的问题。(我使用的是 10.7.1。)

答案2

在这里找到答案:

在终端中,我必须转到“首选项”->“设置”->“高级”,然后将 xterm-color256 更改为 xterm-color!!

相关内容