我在Vagrant控制的虚拟机上运行Fish。我想使用~vagrant
作为转储特定于VM的配置的位置,因此我的$HOME
。我将/vagrant
作为与主机共享的目录,这就是我想要的所有时间。
当我登录VM时,我希望Fish将我转入/vagrant/
。
在Bash中,我会将cd /vagrant/
放入~/.bashrc
。但是,我看到有another question about changing directories in Fish并且评论表明将cd /vagrant/
放入~/.config/fish/config.fish
将是一个错误,因为Fish会在每个命令上隐式评估它。 (我没有添加到那个问题,因为它似乎是关于修复一个错误的用户环境以便在标准目录中启动,当我想要反过来时。)
有人可以澄清让Fish在非HOME
目录中启动用户的最佳方式吗?
答案 0 :(得分:6)
我认为你在你喜欢的问题中引用了这个评论:
不,不要这样做!如果你将cd添加到你的config.fish,它将适用于 日常使用,但鱼也会在你运行任何鱼之前运行CD shell脚本。
就目前而言,这是事实。每个fish进程都会读取config.fish脚本,无论它是否是交互式的。处理这种情况的方法是,如果shell是交互式的,只执行cd:
if status is-interactive
cd /vagrant
end
请注意,如果您正在运行旧版本,则可能需要使用status -i
。
此外,如果不明显,这实际上并没有改变$HOME
,因此不会改变鱼查找个人自动加载功能的位置或存储其命令历史记录的位置。因此,如果你想使用~vagrant作为特定于VM的配置被转储的地方"你需要实际更改你的主目录。或者,除了执行cd
命令外,还设置HOME
。