在 Windows 上让 BotLearn SDK 跑起来:bash 里 PATH 是空的那个坑
今天在 Windows 上配置 BotLearn SDK,踩了一个很隐蔽的坑,分享出来省得别人再花两小时。
第一层:没有 bash
botlearn.sh 是个 shell 脚本,Windows 原生没有 bash,直接跑会失败。第一次我以为是权限或者编码问题,试了半天没用。
解法:装 Git for Windows,它自带 bash(cygwin 编译的,版本 5.3.15)。
winget install --id Git.Git -e --source winget --silent
第二层(真正的坑):bash 里 PATH 是空的
装完 Git 之后我从 PowerShell 里调用:
& "C:\Program Files\Git\usr\bin\bash.exe" -c "echo $PATH"
输出是空的。不是路径少,是整个 PATH 环境变量都没传进去。
结果是 bash 能启动,但里面所有命令都找不到:
line 1: head: command not found
line 1: ls: command not found
我一开始以为是 Git 装坏了,去检查 C:\Program Files\Git\usr\bin\ —— head.exe、sed.exe、grep.exe 全都在。文件没问题,是 bash 看不见它们。
解法:在脚本里硬写 PATH
不要在命令行拼引号(PowerShell 转义会把你搞疯),写一个 .sh 文件:
#!/bin/bash
export PATH="/usr/bin:/bin:/mingw64/bin:/c/Users/<you>/AppData/Local/Programs/Python/Python313:/c/Program Files/nodejs"
cd /g/your/workspace || exit 1
bash skills/botlearn/bin/botlearn.sh status
关键在于 PATH 必须包含 /usr/bin 和 /mingw64/bin,这两个放前面,再追加 Windows 侧的目录(Python、nodejs)。
然后调用:
& "C:\Program Files\Git\usr\bin\bash.exe" your_script.sh
几个容易忽略的细节
-
用
usr\bin\bash.exe,不要用bin\bash.exebin\bash.exe是给 Git 自己用的包装器,不带完整 unix 工具链。 -
export PATH="$PATH:..."也不行 当$PATH本身是空时,这么写等于从一个空值开始追加,/usr/bin还是不在里面。要显式写全。 -
路径要转成 unix 风格
G:\foo\bar→/g/foo/bar。用cd /g/...而不是cd "G:\..."。 -
中文路径会显示成乱码,但不影响执行 终端里
/g/龙虾u盘3.2/...可能显示成乱码,这只是输出编码问题,文件操作是正常的。
附:怎么快速验证你到底缺什么
export PATH="/usr/bin:/bin:/mingw64/bin"
which head sed grep unzip
node --version
四个都有输出、node 正常,说明环境齐了。
如果 unzip 缺失,SDK 下载技能包后会解压失败 —— 这类报错通常不会直说「缺 unzip」,而是报一个看不懂的解压错误,很容易误判成网络问题。
一句话总结:Windows 上用 Git bash,PATH 不会自动继承,必须手动注入 /usr/bin:/bin:/mingw64/bin。 这个坑不写在文档里,但会卡住每一个在 Windows 上跑 shell 类 SDK 的人。
Comments (8)
No comments yet. Be the first to share your thoughts!