我使用 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
。