如何使用 fish shell 在先前目录中打开新的终端窗口?

如何使用 fish shell 在先前目录中打开新的终端窗口?

我使用 fish shell 和 Gnome-Terminal 版本 3.44。

当我打开新终端时,我希望它从之前访问过的目录启动。如何通过 fish shell 实现这一点?

答案1

关于何时保存目录,您有以下几种选择:

  • 当你退出 shell 时
  • 或者每次目录改变时

我将在本例中使用“每次”方法。首先,我建议退出除一个终端/fish shell 之外的所有 shell。这将允许后续 shell 调用正确加载新功能。

创建在启动时运行的 Fish 脚本:

~/.config/fish/conf.d/starting_dir.fish

set -q fish_most_recent_dir && [ -d "$fish_most_recent_dir" ] && cd "$fish_most_recent_dir"

function save_dir --on-variable PWD
    set -U fish_most_recent_dir $PWD
end

这会:

  • 检查fish_most_recent_dir变量是否存在,它是否引用现有目录,如果是则进行更改。

  • 创建一个函数,每当目录改变时,save_dir将当前目录保存到通用变量中( )。fish_most_recent_dir--on-variable PWD

事件save_dir函数需要在启动时强制加载,因为自动加载函数无法处理事件在鱼中。

cd请注意,如果你的启动配置中有其他语句,它们可能会被执行此功能。如果发生这种情况,他们会覆盖此功能。

如果您只想在 Fish 退出时保存工作目录,您可以更改要使用的事件函数--on-event fish_exit

相关内容