适用场景
Windows + Git Bash / MINGW64症状:
- 终端手动输
fvm找不到命令 - 终端能用 fvm,但 sh 脚本里
fvm: command not found - 软链接报错、bat 直接执行语法错误
步骤 1:全局重装激活 FVM
bash运行
Dart
dart pub global deactivate fvm
dart pub global activate fvm
步骤 2:配置 Bash 环境变量
bash运行
Dart
# 清空旧配置,写入正确Pub路径
echo 'export PATH="$PATH:/c/Users/Admin/AppData/Local/Pub/Cache/bin"' > ~/.bashrc
# 生效配置
source ~/.bashrc
步骤 3:创建 Bash 包装脚本(核心:解决脚本无法调用 fvm)
bash运行
Dart
# 生成可执行的 fvm 壳脚本,内部调用 fvm.bat
cat > /c/Users/Admin/AppData/Local/Pub/Cache/bin/fvm << 'EOF'
#!/bin/bash
fvm.bat "$@"
EOF
# 加执行权限
chmod +x /c/Users/Admin/AppData/Local/Pub/Cache/bin/fvm
# 再次生效
source ~/.bashrc
步骤 4:校验
Dart
# 查看版本
fvm --version
# 测试 Flutter 调用
fvm flutter --version
# 测试你的i18n脚本
./scripts/i18n.sh
原理备忘(以后出问题一看就懂)
- Windows 下
dart pub global生成的是 fvm.bat - GitBash 交互式终端可以靠别名识别,但 sh 脚本不读别名
- 不能用 ln 软链接直接指向 bat,会当成 shell 脚本解析报错
- 所以自建一个纯 bash 壳脚本,中转调用 fvm.bat,终端、脚本都能用,不用改项目任何 sh 文件