我在 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
目录中启动用户的最佳方法吗?
最佳答案
我假设您在您喜欢的问题中指的是这条评论:
No, don't do it! If you add a cd to your config.fish, it will work for everyday use, but fish will also run the cd before you run any Fish shell script.
就目前而言,这是正确的。 config.fish 脚本由每个 fish 进程读取,无论它是否是交互式的。处理这个问题的方法是只在 shell 是交互式的情况下执行 cd:
if status is-interactive
cd /vagrant
end
请注意,如果您运行的是旧版本,则可能需要使用 status -i
。
此外,如果不是很明显,这实际上不会更改 $HOME
,因此不会更改 fish 查找您的个人自动加载函数的位置或存储其命令历史记录的位置。因此,如果你想“使用 ~vagrant 作为转储 VM 特定配置的地方”,你需要实际更改你的主目录。或者,除了执行 cd
命令外,还可以设置 HOME
。
关于fish - 让 Fish 在 HOME 以外的目录中启动我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47623924/