Bun Shell 是 Bun 运行时提供的 shell 脚本与子进程管理能力,主要用于在 JavaScript/TypeScript 中执行系统命令、处理命令输出和管理子进程。
用途方面,它覆盖运行 shell 命令、编写可执行脚本、执行 npm/bun 脚本、Git 操作、文件查找与归档、并行任务等场景。
主要能力包括:通过 import { $ } from "bun" 使用模板字面量执行命令,支持变量插值与数组展开;支持管道(如 cat file.txt | grep "pattern" | wc -l);输出可转为 text、json、lines、blob、arrayBuffer;可通过 .quiet() 避免非零退出码抛错并读取 exitCode;可通过 .env()、.cwd() 设置环境变量和工作目录。
Bun.spawn 用于更细粒度控制,支持 cwd、env、stdin/stdout/stderr 的 inherit、pipe、null 及文件重定向,可写入 stdin、读取 stdout/stderr、等待退出、流式读取输出、终止进程(kill)并检查 killed、pid。Bun.spawnSync 提供同步执行,返回 exitCode、stdout、stderr、success。
使用方式上,可写成 shebang 脚本(#!/usr/bin/env bun),配合 chmod +x 后直接运行;也可用 Promise.all 并行运行多个命令,或通过 spawn 后 await proc.exited 等待完成。
限制与注意:命令未在 PATH 中会报 Command not found,需用绝对路径;脚本需可执行权限;非零退出码默认抛错,需用 quiet 或捕获处理;EPIPE 等管道错误需处理进程退出。跨平台与高级信号处理等内容可参考相应参考文档。