Bash 换行和历史滚动

5 bash scroll xterm command-prompt

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

export PS1="test$ ";   ### Works perfectly
Run Code Online (Sandbox Code Playgroud)

我可以在提示符下输入长行并且它们可以很好地换行。在历史记录中向上/向下滚动也可以正常工作。关于使用动态提示,例如:

export PS1="\u@\h(\W)$ ";    ### Long lines don't wrap at all
Run Code Online (Sandbox Code Playgroud)

长长的队伍变得混乱。找到了使长行正确换行的修复程序。(http://hintsforums.macworld.com/showthread.php?t=17068)。

export PS1="\[\u@\h(\W)$ \]";  ### Long  lines wrap while typing, but not while scrolling up/down through previous commands
Run Code Online (Sandbox Code Playgroud)

但是,当向上/向下浏览提示历史记录时,行不会换行。我不知道如何用语言解释这种行为,但我会尝试 - 当我向上(向上箭头键)时,最后一个命令的一半被吃掉,光标最终位于换行符之间的某个位置。

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

我记得在许多 Linux 发行版上,动态提示可以开箱即用地正常工作(这是在我的工作场所)。

问候,

J.P

aks*_*aks 1

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

我使用这个 bash 提示符:

export PS1="\[\e[1;34m\]\u@\h:\W \t (\j) <\!>\n\$\[\e[0;00m\]"
Run Code Online (Sandbox Code Playgroud)

它实际上显示为两行,看起来就像这样:

aks@anywhere:sh 01:43:27 (1) <1017>
$ env | grep PS
PS1=\[\e[1;34m\]\u@\h:\W \t (\j) <\!>\n\$\[\e[0;00m\]
Run Code Online (Sandbox Code Playgroud)

使用 CTRL-N、CTRL-P 或箭头键滚动历史记录效果非常好。

我在 Terminal.app(在 MacBookPro 上)中使用 xterm-color。