Bash换行和历史记录滚动

Bash换行和历史记录滚动,bash,scroll,command-prompt,xterm,Bash,Scroll,Command Prompt,Xterm,我的bash提示符和换行行为有问题。如果我使用静态提示 export PS1="test$ "; ### Works perfectly 我可以在提示符下键入长行,它们可以很好地包装。在历史记录中向上/向下滚动也可以正常工作。 使用动态提示时,如: export PS1="\u@\h(\W)$ "; ### Long lines don't wrap at all 排起了长队。找到了使长线正确缠绕的修复程序。(http://hintsforums.macworld.com/show

我的bash提示符和换行行为有问题。如果我使用静态提示

export PS1="test$ ";   ### Works perfectly
我可以在提示符下键入长行,它们可以很好地包装。在历史记录中向上/向下滚动也可以正常工作。 使用动态提示时,如:

export PS1="\u@\h(\W)$ ";    ### Long lines don't wrap at all
排起了长队。找到了使长线正确缠绕的修复程序。(http://hintsforums.macworld.com/showthread.php?t=17068).

但是,在上/下提示历史记录时,这些行不会换行。我不知道如何用文字来解释这种行为,但我会尝试——当我向上(向上箭头键)时,最后一个命令的一半会被吃掉,光标会在这两行之间的某个地方结束

解决这个问题的办法是什么

我记得在许多linux发行版上,动态提示都是开箱即用的(这是在我的工作场所)

问候,


JP

此问题可能与提示符本身无关,但更可能与终端仿真器的正常运行有关

我使用这个bash提示符:

export PS1="\[\e[1;34m\]\u@\h:\W \t (\j) <\!>\n\$\[\e[0;00m\]"
export PS1=“\[\e[1;34m\]\u@\h:\W\t(\j)\n\$\[\e[0;00m\]”
它实际上跨两行显示,看起来完全像这样:

aks@anywhere:sh 01:43:27 (1) <1017>
$ env | grep PS
PS1=\[\e[1;34m\]\u@\h:\W \t (\j) <\!>\n\$\[\e[0;00m\]
aks@anywhere:sh 01:43:27(1)
$env| grep PS
PS1=\[\e[1;34m\]\u@\h:\W\t(\j)\n\$\[\e[0;00m\]
它可以很好地使用CTRL-N、CTRL-p或箭头键滚动历史


我正在Terminal.app(在MacBookPro上)中使用xterm颜色。

顺便说一下,在第三种情况下,PS1=“\[\u@\h(\W)$\]”,我甚至不知道该行为的正确术语-滚动时是否正在换行,我不希望它换行,也不希望它不换行,我希望它换行。但我对疯狂的显示感到困惑!什么终端软件?PuTTY,gnome terminal,xterm,terminal.app?第二个示例是正确的,应该可以工作。
\[\]
在第三个示例中,用于包装非打印序列,如颜色代码。终端软件是Putty。感谢您的建议,我会尝试。Bugger,我多年来一直存在这个问题,所有这些都是因为我没有以这种方式重置颜色来正确结束提示。谢谢!
aks@anywhere:sh 01:43:27 (1) <1017>
$ env | grep PS
PS1=\[\e[1;34m\]\u@\h:\W \t (\j) <\!>\n\$\[\e[0;00m\]