env-doctor — 环境配置体检
项目跑前先体检,缺啥提前报,别等运行时炸一脸。
何时触发
用户说以下任意一种:
- "体检环境 / 检查 env / 看看 env 配好没"
- ".env 缺了什么 / 环境变量有没有配好"
- "跑前配置检查 / 帮我检查一下环境配置"
- "为什么程序读不到环境变量"
用法
跑体检脚本(纯 bash,无外部依赖):
bash <skill>/bin/check-env.sh [项目目录] # 项目目录缺省 = 当前目录 # 例:bash env-doctor/bin/check-env.sh ~/my-project脚本自动识别模板文件(.env.example / .env.sample / .env.template)并输出:
- 有模板没有 .env → 警告,给出
cp命令 - 有模板有 .env → 列出缺失的 key 和值为空的 key
- 无缺失 → 配置完整提示
- 有模板没有 .env → 警告,给出
根据输出给用户中文说明:
- 缺失 key:在 .env.example 里有,但 .env 里没有该行
- 空值 key:key 存在但等号右侧为空(如
DB_PASSWORD=) - 建议编辑 .env 补全后再次运行体检确认
常见坑提醒:
有些项目(如 Go、Java、C)不会自动加载 .env 文件。 跑程序前需手动导入:
set -a; source .env; set +a只在当前 shell 生效;新终端或子进程需重新导入。
退出码约定
| 退出码 | 含义 |
|---|---|
0 |
配置完整,或无模板可对比 |
0 |
有模板但 .env 缺失(警告,不阻断) |
2 |
存在缺失 key 或空值 key,需用户补全 |
1 |
脚本本身出错(目录不存在等) |
硬规则
- 只读不改:脚本只读取 .env 和模板文件,绝不修改任何文件(除非用户明确要求补全)。
- 不臆造 key 含义:不猜测 key 该填什么值,只列出缺失和空值;若用户问某个 key 怎么填,结合项目上下文作答。
- 不联网、不扫历史:纯本地体检。
边界
- 只解析
KEY=VALUE格式的行;不处理export KEY=VAL(export 前缀)的 shell 脚本风格(可扩展)。 - 不检测 .env 里多余的 key(只看 .env.example 里有的)。
- 不验证值的格式/有效性(如 URL 格式、token 长度),只看是否为空。