cnb-rs ext exec
cnb-rs ext exec <NAME> [args...]显式 dispatch 到 extension binary,与 unknown subcommand fallback 等价,但可以绕过命名冲突。
何时需要
cnb-rs <name> [args] 在 <name> 不是内置子命令时会自动 dispatch 到 extension,但若:
- extension 命令名与某个内置命令同名(如未来某次 cnb-rs 升级新增
cnb-rs info内置命令,而你已装cnb-hello-infoextension) - 调试 / 隔离测试(绕过
handle_removed_command_invocation的 deprecation 拦截)
直接 cnb-rs <name> 会优先匹配内置命令,必须用 cnb-rs ext exec <name> 才能调到 extension。
参数
<NAME>:extension 命令名(不含cnb-前缀,例如stats表示cnb-stats)[args...]:透传给 extension 的所有参数与 flag(保留-/--前缀)
环境变量传递
子进程会继承父进程的所有环境变量,并额外注入:
| 变量 | 含义 |
|---|---|
CNB_BIN | 当前 cnb-rs 可执行文件绝对路径 |
CNB_EXTENSION_NAME | 当前 extension 命令名(不含 cnb- 前缀) |
CNB_DOMAIN | 解析后的 CNB 域名 |
CNB_REPO | 解析后的仓库路径(解析失败时不设置,避免误传空值) |
退出码
子进程的退出码会透传给 cnb-rs 主进程,无中间封装。
示例
bash
# 显式调用 extension
$ cnb-rs ext exec hello world
# 透传 flag(保留 `-` / `--` 前缀)
$ cnb-rs ext exec stats --since 2026-01-01 --until 2026-12-31
# 嵌套调用(extension 反向调 cnb-rs api 拉数据)
$ cnb-rs ext exec whoami # 等价于子进程内 `$CNB_BIN api /user --jq .username`另请参阅
- cnb-rs ext
- cnb-rs ext list — 列出已装 extension
- 指南:cnb-rs extensions — 完整工作原理