You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Vagrant虚拟机名称设置为当前工作目录?

解决Vagrant虚拟机名称设为当前工作目录的问题

嘿,我懂你想把Vagrant虚拟机名称设为当前工作目录的需求!你之前的代码无效是因为用了Shell环境变量的写法,但Vagrantfile本质是Ruby脚本,得用Ruby的方式来获取当前目录才行。

问题根源

你写的ENV[$PWD]是错误的:$PWD是Shell里的环境变量,但在Ruby中,ENV哈希需要传入字符串形式的变量名,而且即便写成ENV['PWD'],拿到的是完整路径,更关键的是——Ruby本身有更直接可靠的方法获取当前工作目录,完全不用依赖Shell环境变量。

正确解决方案

方案1:用当前工作目录的完整路径作为虚拟机名称

如果希望直接用完整路径当名称,可以这么写:

config.vm.provider "virtualbox" do |vb|
  vb.name = Dir.pwd
end

方案2:用当前工作目录的名称(更常用)

大多数情况下,我们只需要目录的最后一段名称(比如当前目录是/Users/me/my-dev-vm,只想要my-dev-vm),这时候可以用File.basename来截取:

config.vm.provider "virtualbox" do |vb|
  vb.name = File.basename(Dir.pwd)
end

代码解释

  • Dir.pwd:Ruby内置方法,返回当前进程的工作目录完整路径,比依赖ENV['PWD']更可靠,不受Shell环境的影响。
  • File.basename(Dir.pwd):File.basename方法会从完整路径中提取最后一部分,也就是目录的名称,完美贴合大多数场景的需求。

把这段代码替换你原来的部分,重新运行vagrant up,虚拟机的名称就会变成你想要的当前工作目录啦!

内容的提问来源于stack exchange,提问作者smithers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:54:08