我使用 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.cshrc
CentOS 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
根本不熟悉,所以我把这部分留给你作为练习。