gpt4 book ai didi

linux - Bash 换行在 Minicom 等串行终端上不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:28 28 4
gpt4 key购买 nike

我有一个带有 BusyBox 的嵌入式 Linux 系统。 BusyBox 自带 ash 作为它的默认 shell,但我需要额外的功能所以我想安装 bash。

我已经安装了 bash,并在系统上运行它,但我的问题是每当我写一个长命令并且 shell 需要下一行时,它会返回到当前行的开头并运行命令的开头。

例如:我写:

aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbb

我得到:

bbbbbbbbaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbb

代替:

aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbb
bbbbbbbb

我会注意到该命令仍然有效。这意味着只有显示器被毁了。默认 shell (ash) 确实知道如何处理这种情况。

我查看了问题并检查了 shell 在到达行尾时在串行端口中生成的二进制文件,它只发送\r 而没有发送\n(ash 发送\r\r\n这就是它运作良好的原因)。

如果我通过 ssh 从我的 Ubuntu 连接到设备并使用 bash shell,它运行良好。我认为这是因为 Ubuntu 终端负责行排序。

我测试过的其他内容:

  • 我看到很多帖子都说我的 PS1 变量可能会发生类似的事情。我试图改变它,甚至只是在其中放一个字符($),没有特殊或不可打印的字符,问题仍然存在。

  • 我尝试配置 bash 使用的系统变量 $TERM(默认为 vt102,我将其更改为 xterm),这没有任何区别。

  • 我试图弄乱 $COLUMNS 系统变量并更改其值,而 bash 确实响应了更改。唯一的问题是,当它识别出需要移动到下一行时,它会生成\r 而不是\n。

有什么办法可以解决吗?也许一些系统变量告诉 bash 在移动到下一行时要写入哪个字符串?或者可能是我在编译 bash 时可以更改的标志?

谢谢。

最佳答案

对此的简单解决方法是 - 使用正好 80 个字符宽的终端。

“调整大小”命令(通常与“xterm”包一起提供)也可以在这里提供帮助 - 在 session 中执行后,命令行的换行相关行为应该会变得更好。

关于linux - Bash 换行在 Minicom 等串行终端上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743337/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com