从 iTerm2 远程登录后如何修复 shell 提示 (ps1) 奇怪的转义序列

Moh*_*abu 5 linux prompt terminal gnome-terminal

从 ubuntu 14.04 登录到我的远程机器后,我观察到以下奇怪的提示。这仅在我使用 ubuntu gui 终端而不是通过腻子时发生。有什么建议可以修复它吗?

这是登录远程服务器后的输出。

在此处输入图片说明

Joe*_*Joe 5

这确实是 iTerm2 集成。与其删除它,不如做 iTerm2 的作者应该在他们的集成脚本中做的事情。

我一直在通过 linux ssh 并确认我原来的解决方案是不够的。一世

有一个 ANSI 序列,无论哪个 shell/ssh 处于活动状态,iterm 都会响应该序列。对于想要自己滚动的人来说,顺序是printf '\x1b[1337n'. 我不知道为什么 iterm shell 集成脚本不会自己进行这个查询,如果它没有被托管在 iterm 中,它就会保释。

你的 .bashrc (或任何 shell 初始化你我们)应该有这样的东西:

test -r ~/.iterm2_shell_integration.bash && 。~/.iterm2_shell_integration.bash

可能没有初始测试。只需将其更改为更丑陋的:

isiterm2.sh && test -r ~/.iterm2_shell_integration.bash && 。~/.iterm2_shell_integration.bash

原始脚本 isiterm2.sh(由 iTerm2 作者 gnachman 编写,可在此处在 github上找到。上面嵌入的引用块中的链接是对原始脚本的修改,并进行了以下细微更改:

  • 在某些情况下可能有输出的命令上添加重定向到 dev null
  • 将转义序列切换为 echo -ne \x 格式,以便它们是可打印的 ascii
  • 保释 Msys bash/git,直到我花一些时间弄清楚为什么 stty 变得脾气暴躁

这是我原来的不完整答案

[[ $TERM_PROGRAM == "iTerm.app" ]] && test -r ~/.iterm2_shell_integration.bash && 。~/.iterm2_shell_integration.bash

TERM_PROGRAM 由 OS X Terminal 和 iTerm2 设置。


mic*_*has 1

该数据非常类似于ANSI 转义序列

这些可用于切换字符的颜色、更改终端模拟器的标题栏等等。

它们的工作原理是将这些代码直接打印到屏幕上,并希望您的终端模拟器能够正确理解它们。

几乎每个终端模拟器都实现了一些功能(例如更改颜色)。一些更奇特的功能可能仅在某些仿真器中实现,而另一些可能仅适用于一种特定的终端仿真器。(如腻子)

如果您的终端模拟器无法识别代码,它会忽略它们并简单地在屏幕上打印“垃圾”。

在您的情况下,有人可能添加了腻子特定的代码。目前很难阅读,您的案例中的内容到底是什么。

看看吧~/.bashrc。您的 PS1 提示很可能是在那里定义的。它可能会给你一个提示,它的意图是什么。

如果你只是想摆脱它,只需设置你自己的 PS1 提示符,一切都会好的。