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

使用FVM管理Flutter版本时如何在终端动态获取Flutter路径?

解决方案

你遇到的问题核心是fvm通过软链接动态映射flutter版本,硬编码固定路径肯定会随版本切换失效,whereis flutter返回空也是因为fvm的动态软链接不在系统默认的二进制检索目录里,属于正常情况。
不需要手动查flutter安装路径,直接用下面两种方案改脚本就行:

方案1:直接用fvm内置命令(推荐,零维护成本)

fvm本身已经做了全场景的路径适配,不管你当前是在项目目录下用项目指定的flutter版本,还是用全局默认的flutter版本,只要以fvm flutter开头调用命令,就会自动匹配当前生效的flutter版本,完全不用关心实际安装路径在哪。
修改后的完整脚本:

#!/usr/bin/env bash

set -uex

# 配置国内Flutter镜像源
export PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub
export FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter

# 调用fvm映射的当前生效flutter执行依赖升级
fvm flutter pub upgrade

这个方案后续不管你切换flutter版本、调整fvm缓存目录、升级fvm本身,脚本都不需要改。

方案2:手动获取动态路径(特殊场景用)

如果你有定制需求必须拿到flutter可执行文件的绝对路径,可以用fvm自带的which子命令获取,脚本里写法如下:

#!/usr/bin/env bash

set -uex

export PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub
export FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter

# 动态获取当前生效的flutter可执行文件路径
FLUTTER_BIN=$(fvm which flutter)
# 执行升级命令
$FLUTTER_BIN pub upgrade

注意:这个方案要求执行脚本时,要么当前目录是配置了fvm版本的Flutter项目,要么你已经提前设置了fvm全局默认Flutter版本,否则会拿不到路径报错。


之前操作的问题说明

  • fvm list只会列出所有本地已缓存的Flutter版本,不会标记当前生效版本,要查当前激活版本可以执行fvm current
  • whereis命令只会检索系统默认的二进制存储目录,fvm的软链接默认存放在fvm自身的配置目录下,没手动加进系统检索路径的话,查不到结果是正常的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:27:22