在 bash 中输入的长命令覆盖同一行

veg*_*ipy 11 linux terminal bash shell command-line

由于每当我输入长命令时我们将 Bash 更新到 4.3.27,如果它到达终端窗口的末尾,而不是在新行中继续,它会在开头使用“>”覆盖同一行以标记行被换行(我可以在行上前后移动。我的意思是,它不只是覆盖当前行)

就像是:

假设我的终端有 30 个字符的宽度

更新前 user@HOSTNAME ~$ echo "hello w orld!"

更新后 <ME ~$ echo "hello world!"

自 bash 更新以来,我的环境没有任何变化。$BASHOPTS显示与之前相同的值,除了“complete_fullquote”

如何恢复“多行行为”?

问候

小智 8

更改您的 TERM 变量。例如,如果我这样做

~$ export TERM=xterm
Run Code Online (Sandbox Code Playgroud)

然后行为很好地包装,就像在更新之前一样

~$ export TERM=linux
Run Code Online (Sandbox Code Playgroud)

该行为是您更新后的行为

这个职位上askubuntu可以帮助你,如果你有一个彩色PS1。

  • 没用。:\。是的,我曾经有一个彩色的 PS1,但这也发生在最简单的 PS1 无色组合中 (3认同)

mai*_*iki 5

简短的回答:

echo "set horizontal-scroll-mode off" >> ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

长一点的答案:

在交互式 bash shell 中,用户输入由 READLINE 库处理(在 bash 手册页中查找以获取更多信息)。根据 bash 文档,默认行为是当输入长于屏幕宽度时换行。您可以通过设置水平滚动模式变量来覆盖此默认值。

由于您没有获得默认行为,您可能需要检查:

  • $INPUTRC 指向的文件以查看是否设置了水平滚动模式。值得注意的是,如果 readline 变量读取为空、null、on(不区分大小写)或 1,则会设置它。
  • 如果您编译了 bash 版本,则使用的配置选项