Mac OS X Lion终端在PS1 envvar中间放置命令提示符


1

在我安装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\]-->"

与关于命令提示符的问题一样,请发布您的PS1值或您设置的代码(如果有),以便我们可以看到提示应该是什么。
克里斯·佩奇

PS1设置在上面发布。谢谢。
ennuikiller 2011年

Answers:


1

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

例如,我有这个~/.bashrc让我的提示加粗:

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

每个转义序列都用方括号括起来。(我正在使用tput生成代码而不是像许多人那样对它们进行硬编码。这样更易于移植,使得阅读和维护shell脚本变得更容易。)

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


奇怪....它可以是终端偏好设置吗?
ennuikiller 2011年

1
任何终端偏好设置都不太可能导致这种情况发生。(除了可能将$ TERM值更改为告诉Bash或ncurses不发送您的提示正在使用的命令代码的内容。)您是否尝试使用默认的基本设置配置文件?更可能的罪魁祸首是shell启动文件中的内容。尝试使用Shell> New Command运行bash --noprofile --norc,然后在命令提示符下设置PS1,看看它是否有同样的问题。
克里斯·佩奇

0

在这里找到答案:

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


一般来说,尽管切换到xterm-color可以作为一种解决方法,但这样做通常只是掩盖问题而不修复它。从Mac OS X Lion 10.7开始,不推荐使用带终端的xterm-color。xterm-color代表Xterm的旧分支,但从Lion开始,Terminal与现代Xterm更兼容。这种解决方法几乎肯定只是指出有一些无效的东西发送到终端,并切换到xterm-color以某种方式抑制它。我建议继续调查以发现问题的实际来源。
克里斯·佩奇

使用xterm-color禁用几种所需的行为,例如256色,背景颜色擦除(BCE),以及用于切换到备用屏幕或从备用屏幕切换的现代Xterm代码,同时保留内容。
克里斯·佩奇

正如我在另一篇评论中提到的,我无法使用你的PS1字符串在Lion上重现问题,TERM = xterm-256color。您的一个shell配置文件中可能还有其他内容干扰了您的提示。尝试注释掉行,直到问题消失以隔离源。
克里斯·佩奇

查看shell配置文件,查找取决于值的任何内容$TERM。查找对$ TERM的任何实际引用,以及tput可能依赖于$ TERM的调用或其他程序。
克里斯·佩奇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.