让 Fish 在 HOME 以外的目录中启动我
Make Fish start me in a directory other than HOME
我是 运行 Vagrant 控制的虚拟机上的鱼。我想使用 ~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 查找您的个人自动加载函数的位置或存储其命令历史记录的位置。所以如果你想 "use ~vagrant as the place where VM-specific configuration gets dumped" 你需要实际改变你的主目录。或者,除了执行 cd
命令外,还设置 HOME
.
我是 运行 Vagrant 控制的虚拟机上的鱼。我想使用 ~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 查找您的个人自动加载函数的位置或存储其命令历史记录的位置。所以如果你想 "use ~vagrant as the place where VM-specific configuration gets dumped" 你需要实际改变你的主目录。或者,除了执行 cd
命令外,还设置 HOME
.