fix: 修复在启用 set -u 时由于未绑定变量导致的 store_session_get_latest_dir 和 validate_config 崩溃#67
Conversation
… and validate_config
cde9565 to
c3abebc
Compare
|
感谢修复未设置密钥时触发未绑定变量的问题。 我保留了对 Anthropic/OpenAI 环境变量的安全展开修复,但恢复了两处原有逻辑:
因此最终仅保留安全变量展开的改动:未设置 |
e2bd232 to
d859bf8
Compare
|
更正我上一条评论中关于 GNU 我已撤销对 |
|
已补充配置解析顺序的修复。核心原则是优先使用用户已设置的配置,只有缺失时才使用自动检测或默认值:
因此,显式 OpenAI/Anthropic 的密钥或地址不会被 DeepSeek 自动检测覆盖。 |
|
已完成跨运行时配置优先级修复与复核。 本次补充提交: 验证结果:
修复确保 C、Go、Rust 与 Bash 一致:显式配置优先,其次为当前 provider 的环境配置,再执行 DeepSeek 回退并切换至 Claude 兼容传输。 |
速度太快了 |
|
最近自己用C版本比较多,Bash版本疏于测试了 |
描述
本 PR 修复了在启用
set -u(未定义变量视为错误)时导致bash-agent崩溃的两处未绑定变量问题。问题现象
安装bash的版本
然后设置deepseek
出现报错
修复详情
1. 修复
store_session_get_latest_dir中出现的File: unbound variable错误在 Linux 系统上,
stat -f用于查询文件系统状态(与 BSD/macOS 格式化输出不同)。在 Linux 执行stat -f "%m"虽然找不到名为%m的文件,但依然会为第二个参数输出文件系统信息,其标准输出(stdout)包含File: ...字样。此输出被捕获存入变量
ts中,随后在数学计算表达式(( ts > latest_ts ))中被评估。Bash 遇到File单词时会将其视作变量去解析。在set -u启用下,这会引发未绑定变量File的崩溃。在进入循环前先检测
stat命令是支持-c(GNU)还是-f(BSD),动态构建命令,并在赋值时通过正则确保ts是合法数字,避免非法字符串干扰。2. 修复
validate_config中出现的ANTHROPIC_API_KEY: unbound variable错误默认的
claude提供商分支会先执行: "${API_KEY:=$ANTHROPIC_API_KEY}"。如果用户使用的是 DeepSeek,仅配置了DEEPSEEK_API_KEY而未定义ANTHROPIC_API_KEY,脚本在走到 DeepSeek 自动检测逻辑前就会因未定义变量崩溃。validate_config函数的最顶部。${ANTHROPIC_API_KEY:-}和${OPENAI_API_KEY:-},以防在未配置这些变量时触发set -u崩溃。