为什么当我使用向上箭头键时,我的 Mac 终端出现故障?

Soc*_*cks 5 macos terminal

我通常使用向上箭头键滚动浏览终端中的先前命令。我注意到在过去的几个月里,当我这样做时,我没有得到以前的命令,而是得到了“错误行为”。例如,当我按向上箭头键时,它可能会输入乱码和明显随机的空格以及我的命令的一小部分。有人对可能造成这种情况的原因有任何想法吗?有时有效,有时无效。它开始变得非常烦人。(仅供参考,我正在使用 yosemite 和 osx,如果有任何相关性的话)

小智 7

我知道这是一个老问题,但我最近遇到了同样的问题。问题可能出在您的 PS1 提示符上。您可能没有完全包含非打印字符\[ ... \]

解决方法:

  1. 在您的终端中echo $PS1- 这将显示您当前的 PS1 设置。
  2. 确保任何选项(例如颜色选项)都包含在\[和\]中并进行设置。例如PS1='\[\e[95m\]\u \[\e[93m\]\w:\[\e[92m\]\$'
  3. 将新的 PS1 永久保存在 .bash_profile 中或保存 bash 设置的任何位置。

例子:

我的 PS1 故障是\[\e[95m\]\u \[\e[93m\]\w: \e[92m\]\$

我错过了开口外壳,\[之后\w:

我修正后的PS1是\[\e[95m\]\u \[\e[93m\]\w:\[\e[92m\]\$


Wil*_*Dye 3

就我而言,在我将 .bashrc 更改为使用“HISTSIZE=-1”后不久,向上箭头就在 OSX 中停止正常工作。我未经证实的猜测是 bash 版本太旧,无法处理 -1 选项,因此 bash 完全停止记录历史记录。我的向上箭头键被正确解释,但没有历史记录可供检索。一旦我更改了 HISTSIZE,新终端中的向上箭头(和历史命令)就再次开始工作。

需要明确的是,我不能说您的问题是否源于同一原因。我不记得历史中出现过乱码,尽管我确实看到了一些奇怪的行为,例如错误的“”。以某种方式出现在 ls 命令中。不过,如果有人在使用向上箭头检索以前的 bash 命令时遇到问题,那么似乎值得一试。尝试检查您的 HISTSIZE 设置,和/或直接调用历史命令,以确保您有向上箭头可检索的历史记录。

  • 这更像是评论而不是答案。 (2认同)