![如何配置 GNOME 终端以启动与当前选项卡具有相同 SSH 主机和目录的新选项卡?](https://linux22.com/image/215099/%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%20GNOME%20%E7%BB%88%E7%AB%AF%E4%BB%A5%E5%90%AF%E5%8A%A8%E4%B8%8E%E5%BD%93%E5%89%8D%E9%80%89%E9%A1%B9%E5%8D%A1%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%20SSH%20%E4%B8%BB%E6%9C%BA%E5%92%8C%E7%9B%AE%E5%BD%95%E7%9A%84%E6%96%B0%E9%80%89%E9%A1%B9%E5%8D%A1%EF%BC%9F.png)
我的来源vte.sh
在我的.bashrc
.这样做的一件事是它导致 Bash"\033]7;file://$HOSTNAME$PWD\007"
作为PROMPT_COMMAND
.这使用转义序列“OSC 7”file://mylocalbox/home/kerrick
向终端发送类似的值,告诉它当前的主机名和目录是什么。当您在 GNOME 终端中打开新选项卡时,它会使用 OSC 7 中的信息在与前一个选项卡相同的目录中打开终端。
我想配置 GNOME 终端,以便如果当前选项卡正在运行 SSH 会话,启动新选项卡将通过 SSH 连接到同一主机并更改到同一目录。换句话说,如果 OSC 7 值类似于file://myremotebox/foo/bar
,它将运行exec ssh -t myremotebox 'cd /foo/bar && exec bash -l'
而不是默认终端会话。
如何配置 GNOME 终端来执行此操作?
答案1
它不支持此功能,您需要修改其源代码。如果您习惯于接触外国 C++ 代码,这可能是一项相当简单的任务。
笔记:
虽然您当然可以想出一个适用于大量情况的补丁,但总会有无法 100% 可靠处理的情况。
也许远程用户名与本地用户名不同。用户名不是 OSC 7 序列的一部分,因此您无法知道远程用户名是什么。
也许远程主机名(远程主机称其自身)无法在本地主机上使用来解析其地址。
也许该网站是通过多个 ssh 跃点到达的。
sshd 也许正在非默认端口上运行。
也许它不是 ssh,而是老式的 rsh / telnet 或类似的东西。
可能还有更多......像这样的情况很难使这样的功能符合主流包含的条件,它只会经常中断(特别是用户名不匹配在实践中是一个有效的问题)。 OSC 7 为您提供部分的相关信息你在哪里,而你需要的是到那里怎么走。