使用 csh shell 在 gnome 终端中创建新选项卡时如何打开当前路径?

使用 csh shell 在 gnome 终端中创建新选项卡时如何打开当前路径?

我使用 CentOS 7.9(Gnome Terminal 3.28.2)csh(是的,我知道,但工作要求)作为我的默认 shell。我的问题是这样的:每当我在 gnome 终端中打开新选项卡时,新选项卡都会重定向到~/,而不是保留旧路径的路径。假设我目前位于/home/myself/project1/src/,我希望我的新标签也位于/home/myself/project1/src/,而不是回到/home/myself

在我们超旧的 CentOS 6.10 机器(Gnome Terminal 2.31.3)上,用户也csh默认使用新选项卡,它们确实会按照我们的需要保留旧路径。

同时,bash没有表现出任何问题。无论是在 6.10 还是 7.9 上,用作bash默认 shell 的用户在打开新选项卡时始终保留其旧路径。

看来我的问题都与外壳有关侏儒终端。令人沮丧的是,/etc/csh.cshrcCentOS 6.10 和 7.9 机器上的文件看起来相同,而且我未能在 Gnome 终端的首选项中找到任何切换。

那么回到标题,使用时csh如何让新选项卡从 gnome 终端中旧选项卡的路径开始打开,而不是返回~/?非常感谢!

答案1

您需要发出 OSC 7 转义序列,其参数是当前工作目录的 URI,采用 URI 编码格式。这告诉终端模拟器工作目录是什么,从而让它在同一目录中启动新的选项卡/窗口。

您可能想要了解/etc/profile.d/vte.csh如何/etc/profile.d/vte-2.91.sh执行此操作,包括使用/usr/libexec/vte-urlencode-cwd执行 URI 编码的辅助二进制文件。不同系统的确切路径名可能略有不同。

/etc/profile.d/vte.csh似乎是在检查外壳tcsh。我不知道它是否使用了任何不适用于普通 old 的东西csh,或者如何将其连接到csh某个适当的位置(例如,当打印提示时,或者当目录更改时)。或者也许它也有效csh,你只需删除tcsh支票即可。我不熟悉csh或者tcsh根本不熟悉,所以我把这部分留给你作为练习。

相关内容