我的来源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 为您提供部分的相关信息你在哪里,而你需要的是到那里怎么走。