Make Fish在HOME以外的目录中启动我

Nat*_*rot 2 fish

我在Vagrant控制的虚拟机上运行Fish.我想~vagrant用作特定于VM的配置被转储的地方,所以这就是我的$HOME.我有/vagrant一个与主机共享的目录,这就是我想要的所有时间.

当我登录VM时,我想让Fish把我丢进去/vagrant/.

在bash中,我会通过将做到这一点cd /vagrant/~/.bashrc.但是,我看到有关于鱼更改目录的另一个问题和意见建议,把cd /vagrant/~/.config/fish/config.fish将是一个错误,因为鱼会隐评估它在每个命令.(我没有添加到那个问题,因为它似乎是关于修复一个错误的用户环境,以便在标准目录中启动,当我想要反过来时.)

有人可以澄清让Fish在非HOME目录中启动用户的最佳方法吗?

Kur*_*der 7

我假设你在你喜欢的问题中提到这个评论:

不,不要这样做!如果你在config.fish中添加一个cd,它将适用于日常使用,但是在运行任何Fish shell脚本之前,fish也会运行cd.

就目前而言,这是事实.每个fish进程都会读取config.fish脚本,无论它是否是交互式的.处理这种情况的方法是,如果shell是交互式的,只执行cd:

if status is-interactive
    cd /vagrant
end
Run Code Online (Sandbox Code Playgroud)

请注意,status -i如果您运行的是旧版本,则可能需要使用.

此外,如果不明显,这实际上并没有改变$HOME,因此不会改变鱼寻找您的个人自动加载功能或存储其命令历史的位置.因此,如果您想"使用~franrant作为特定于VM的配置被转储的位置",您需要实际更改主目录.或者,除了执行cd命令外还设置HOME.