gpt4 book ai didi

ssh - conemu + ssh 清除控制台历史记录

转载 作者:行者123 更新时间:2023-12-02 13:47:44 26 4
gpt4 key购买 nike

我正在使用 ConEmu 并且对它非常满意,除了如果我使用 PuTTY 进行 SSH 访问,我可以在远程机器上运行命令,如 vim 或 nano 或 mcedit 或其他打开某种诅咒接口(interface)的命令和我可以看到控制台命令历史记录,但是当我使用 CygWin SSH 客户端或 Windows 的 OpenSSH 时,我在运行 vim/nano/mcedit/whatever 之后再也看不到命令​​历史记录。

当我退出这些程序(vim 中的 wq,mcedit 中的 Esc 键,nano 中的 Ctrl^X)时,我可以看到所有先前执行的命令,如下所示(如果我使用 PuTTY):

  • 运行 PuTTY 并连接到某个主机
  • 你会在历史上看到类似的东西:
    主持人$ whoami
    用户
    主机$ vim
    ...在 vim 中做一些事情然后按 :wq

  • 你应该看到这个:

    === 剪辑 ===
    主持人$ whoami
    用户
    主机$ vim
    主机$
    === 剪辑 ===

    所有之前的命令 (whoami) 都是可见的。但是,如果我运行 ConEmu,然后使用 CygWin 的 SSH 客户端(或 OpenSSH 客户端,没关系),则会发生以下情况:
  • 运行ConEmu
  • ssh 用户@somehost
    主持人$ whoami
    用户
    主机$ vim
    ...在 vim 中做一些事情然后按 :wq

  • 现在屏幕是空的!没有历史!你只看到这个:

    === 剪辑 ===
    主机$
    === 剪辑 ===

    好像没有执行whoami。 mcedit、nano 或任何其他具有“屏幕”之类的程序也会发生同样的情况。 Midnight Commander 中的 Ctrl-O 也会发生同样的情况,在 PuTTY 中一切都很好,但是当在 ConEmu(或 OpenSSH Windows 客户端)中使用 CygWin 的 ssh 并运行 Midnight Commander 时,每个 Ctrl-O 只显示一个空的历史记录。好像之前没有输入任何内容一样。这真的一点都不好。

    有没有办法解决这个问题?

    最佳答案

    标准TERM PuTTY.exe 的环境变量是 xterm这主要适用于 Cygwin ssh.exe也是。但是,更好的 TERM ssh.exe 的环境变量是 cygwin .

    当你使用 Cygwin ssh.exe要连接到另一个系统,Cygwin 会处理您的转义序列,而不是 ConEmu。事实上,无论您是否正在运行 ssh.exe,都会得到相同的行为。 ConEmu 内部或外部。所以这个问题根本与 ConEmu 无关,至少与它的 ANSI 处理器无关。

    解决方案是使用 cygwin对于TERM远程系统上的环境变量。事实上,SSH 客户端和服务器会合作自动为您执行此操作。但也许你不小心覆盖了提供的 TERM变量说 xterm在您的 .bash_profile管他呢。在这种情况下,退出编辑器后恢复屏幕缓冲区的转义序列对于 Cygwin ANSI 处理器将不正确。

    你可以做这个测试来检查这是否能解决你的问题:

    $ export TERM=xterm
    $ vim
    $ # the screen before is cleared
    $ export TERM=cygwin
    $ vim
    $ # the screen buffer is restored

    关于ssh - conemu + ssh 清除控制台历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19207673/

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