fish - 让 Fish 在 HOME 以外的目录中启动我

标签 fish

我在 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/

相关文章:

matlab - 在 matlab 中打开 GUIDE 时出错

fish - fish shell 中用户和root的别名和功能相同

shell - Fish 相当于 bash $(command) 符号

shell - 将字符串拆分为命令行参数

bash - fish shell 中的别名替换

fish - 如何在 fish shell 中获取数组大小?

linux - 如何在 Tmux 中打开每个新窗口时显示消息?

fish - 使用子命令创建自动完成脚本

user-input - 如何在 fish shell 中获得用户确认?

linux - fish 中的配置