修复 SSH 远程登录到另一台机器后的终端标题

现在我正在使用单行 perl 代码来更改终端栏的标题,

print("\e]0;@ARGV\7");

但是,每当我 ssh 到另一个远程设备后,主机肯定会修改标题(因此我并不特别担心)。 但是在我退出连接后,自定义的标题仍然存在。 有办法修复这个吗? 本质上,我希望在本地运行时为我的终端修复标题。

我主要在 CentOS 或 Debian 下使用 xfce 终端和终结器,谢谢

编辑

另一个细微差别是,与其让所有终端具有完全相同的名称,我当然希望可以自由地即时修改它们的标题,但只是禁止 SSH 会话自定义我编辑的内容。

24
2022-06-07 14:39:32
资源 分享
答案: 3

将这些行添加到 ~/. .bashrc

# If this is an xterm set the title to [email protected]:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\[email protected]\h: \w\a\]$PS1"

    ;;
*)
    ;;
esac

在基于 debian 的 linux 上运行良好

4
2022-06-08 03:21:03
资源

使用相同的设备配置您的区域 shell 点文件(例如 ~/.bashrc 中的 $PROMPT_COMMAND)以适当地设置终端标题。

举个例子:

export PROMPT_COMMAND="printf '\e]0;bash\7\n'"
4
2022-06-07 15:10:50
资源

我不知道窗口标题,但实际上我一直在尝试让我的系统在结束 ssh 会话后真正终止 ssh 会话 bdsh 做一些事情。 基本上:它不是那样工作的。 通常你有3个选择:

  1. 围绕 ssh 编写一个包装器,即一个名为 ssh 的可执行 shell 手稿,它优先于 $PATH 中的 /usr/bin/ssh,其中包含位于其中间某处的行 exec /usr/bin/ssh [email protected]。 这允许您在运行有效的 ssh 二进制文件之前和之后让您的 shell 做一些事情,同时将开销保持在最低限度。

  2. 写一个与您选择的 SSH 源代码对比的地方,为您提供一个清理钩子,该钩子执行使用命令行或某些配置传递的 shell 命令 - 设置。 这就是我们所渴望的。

  3. PROMPT_COMMAND 评估 history 的输出。 通常,对于 1 来说,这是一种更常见但也更糟糕的技术。

6
2022-06-07 15:08:28
资源