当我登录(使用ssh
)到其他主机并打开一个新选项卡(按CTRL+ Shift+ T)时。它将当前工作目录设置为我家中的特定目录,独立于远程主机上的当前工作目录。
- 那么造成这种行为的原因是什么?
- 我该如何改变它?
我正在使用红帽。
答案1
当您按Ctrl+ Shift+时T,Gnome 终端会查看在此选项卡中运行的进程的当前目录,并切换到该目录以在新选项卡中运行该进程。
请注意,如果您输入bash
已经在运行 shell 且位于 中的 Gnome 终端选项卡,并且在该 bash 实例中/directory1
运行,则按+ +启动一个带有位于 中的 shell 的新选项卡。 Gnome-terminal 只查看其子进程的当前目录,而不查看其后代。 (这确实是唯一合理的方式:它将如何决定选择哪个后代?)cd /directory2
CtrlShiftT/directory1
当您ssh
在另一台机器上运行打开 shell 时,Gnome 终端会执行它一贯执行的操作:当您打开新选项卡时,该选项卡会在您运行命令的 shell 目录中启动ssh
。
Gnome-terminal 无法知道另一台机器上的当前目录。为此,需要与 SSH 和远程 shell 进行非常紧密的集成。我并不是说这是不可能的——Emacs 的流浪汉解析来自远程 shell 的提示以找出远程目录 - 但它会在复杂性、可靠性和灵活性方面付出代价。 Gnome-terminal 为您提供了一个终端,让您可以在其中做您想做的事情; TRAMP 控制 SSH 连接,并且不处理远程 shell 的任意行为。
如果不做一些重要的开发工作,您就无法改变这一点。您可以使用 Emacs 作为终端模拟器(但当然,Emacs 远非 Gnome 终端的直接替代品,您需要养成不同的习惯)。如果您在远程计算机上需要做的只是操作文件而不是运行程序,则可以将文件挂载到SSHFS,然后您只需运行本地 shell,以便获得所需的当前目录跟踪。但到目前为止,在同一远程目录中创建新选项卡的最简单方法是创建一个新选项卡,运行相同的ssh
命令,然后复制粘贴远程路径。