![服务器 Bash 文本换行和位置错误](https://linux22.com/image/559301/%E6%9C%8D%E5%8A%A1%E5%99%A8%20Bash%20%E6%96%87%E6%9C%AC%E6%8D%A2%E8%A1%8C%E5%92%8C%E4%BD%8D%E7%BD%AE%E9%94%99%E8%AF%AF.png)
这是一个很难解释的问题,当使用 bash shell 连接到我的一台服务器时,在任何用户下换行都会中断,并且会出现各种问题。其中一个问题我在下面的屏幕截图中详细说明:
我遇到的其他问题包括 nano 对我所处的行和字母感到非常困惑,如在 nano 中输入相同的消息时所示:
这些问题仅在连接到我之前提到的运行 CentOs 的服务器之一时发生。您知道为什么会发生这种情况以及我可以做些什么来修复它吗?在其他服务器上,该消息工作正常!
谢谢你的时间,
请求命令的输出:
无法正常工作的服务器:
工作服务器:
这可能是非工作服务器上的自定义提示吗?在 .bashrc 中
PS1='\e[1;32m\u@\h\e[m:\e[1;34m\w\e[m$ '
注释掉这一点似乎可以解决问题。
谷歌表示,如果不遵守这些规则,可能会出现换行错误
use the \[ escape to begin a sequence of non-printing characters,
and the \] escape to signal the end of such a sequence
我不确定这在我的提示中适合放在哪里?
答案1
自定义提示是个问题(来自您的评论)。
PS1='\e[1;32m\u@\h\e[m:\e[1;34m\w\e[m$ '
它要么发送您的终端无法理解的控制序列,要么发送的格式不正确。
你可以试试这个,
PS1='\[\e[1;32m\]\u@\h\[\e[m\]:\[\e[1;34m\]\w\[\e[m\]$ '
答案2
这几乎肯定是由于您的终端仿真器和正在运行的系统在终端功能方面存在意见分歧。如果如您所说,这种情况仅发生在某些机器上(或仅通过 SSH),请比较TERM
工作系统和非工作系统之间的环境变量值,并尝试TERM
在非工作系统上进行适当设置。
这可能不起作用,具体取决于terminfo
无法正常工作的系统上的数据库有多旧;您可能需要升级该系统,或者至少找到TERM
适合您并且远程系统知道的另一个值。
答案3
我遇到了同样的问题。我进入 Lion(最新 OSX 10.7.3)中的 Terminal 的“首选项”,然后进入:
设置-->高级-->“将终端声明为”
并选择“xterm”而不是原来的V100。
问题解决了。
(这是因为我喜欢我的自定义提示等等。)