如何设置 shell 为长命令换行?

use*_*308 4 linux command-line prompt terminal

我连接到 Slackware 服务器。当命令长于 putty 窗口的大小时,该行将继续在同一行中,当我继续添加到同一命令时,该命令的开头将消失,只需在该行的开头放置一个“<”。

懒人服务器

当我在 Red Hat 服务器上工作时,我可以看到整个命令,因为控制台只是根据需要添加行。

红帽服务器

我不知道在哪里打开自动换行。我在哪里可以设置 Slackware 服务器像我的 Red Hat 服务器那样换行?PS:请原谅我的英语。

Kam*_*ski 5

这可能是因为您正在使用bash(或其他使用 readline 的 shell)并且在您的~/.inputrc(或全局/etc/inputrc)中

set horizontal-scroll-mode On
Run Code Online (Sandbox Code Playgroud)

来自man readline

horizontal-scroll-mode( Off)
当设置为 时 On,使 readline 使用单行显示,当输入变得比屏幕宽度长时,在单行屏幕上水平滚动输入而不是换行。

解决方案:删除该行(默认设置为Off)或将选项显式设置为Off

set horizontal-scroll-mode Off
Run Code Online (Sandbox Code Playgroud)

readline的用途/etc/inputrc只有当~/.inputrc不存在或无法读取(~/.inputrc也可以$include /etc/inputrc),所以即使有On/etc/inputrc你不能或不想改变它,你可以随时通过编辑覆盖了设定~/.inputrc

更改不会自动影响已经运行的 shell。您可以重新加载配置

bind -f ~/.inputrc
Run Code Online (Sandbox Code Playgroud)

(请参阅),或仅更改该设置

bind 'set horizontal-scroll-mode off'
Run Code Online (Sandbox Code Playgroud)

horizontal-scroll-mode如果TERM环境变量设置为在 terminfo 数据库中找不到的终端名称,则readline 库也将回退;您可以检查infocmp命令是否是这种情况。请参阅此处了解如何补救这种情况。


<在一些不使用 readline 的 pdksh 派生 shell 中使用了类似的界面(但在行的右端显示标记)(特别是mkshAndroid 上的默认设置)。对于这种情况,没有可能的解决方法。