尧图精选

如何为 zx 脚本指定自定义 shell 解释器?

🕒 发布时间:2026/9/10 8:48:53 📁 来源:尧图网络
如何为 zx 脚本指定自定义 shell 解释器【免费下载链接】zxA tool for writing better scripts项目地址: https://gitcode.com/GitHub_Trending/zx/zx在 zx 脚本里await $command这类模板字符串是通过 shell 解释器执行的。zx 默认使用bash文档表述为默认which bash如果环境里只有 zsh、想固定某个 bash 的二进制路径或在 Windows 上改用 PowerShell就需要为脚本指定自定义 shell 解释器。本文基于 docs/shell.md、docs/configuration.md、docs/cli.md 和 docs/setup.md给出三条等价的配置路径和内置预设函数以及如何确认切换生效。前提条件来自 docs/setup.md 的 Requirements 一节平台Linux、macOS 或 WindowsJavaScript 运行时Node.js 12.17.0、Bun 1.0.0、Deno 1.x/2.x 或 GraalVM Node.js 任一环境中存在某种 bash 或 PowerShell。文档同时提醒zx 主要依赖 bash在 Windows 上建议使用 WSL 或 Git Bash。方式一在脚本里设置$.shellJS API$.shell指定命令执行的 shell这是 docs/configuration.md 中$.shell一节给出的配置项。在脚本开头赋值即可文档示例$.shell /usr/bin/bash也可以指向其他解释器docs/shell.md 中给出的 zsh 示例$.shell /bin/zsh赋值为解释器的二进制路径此后脚本中所有$调用的命令都交由该 shell 执行。若希望仅对某一次调用生效可把shell作为单次调用选项传入docs/api.md 的Options接口中shell的类型为string | true。方式二--shell命令行参数不改脚本通过 CLI 参数指定自定义 shell 二进制路径。docs/cli.md 的--shell一节说明其默认值为bash示例命令zx --shell/bin/another/sh script.mjsdocs/shell.md 中的对应写法参数与路径之间用空格zx --shell /bin/zsh script.js适合同一份脚本在不同环境用不同解释器运行、又不想修改脚本内容的场景。方式三ZX_SHELL环境变量docs/cli.md 说明所有 CLI 选项都可以通过对应的ZX_前缀环境变量设置shell 对应ZX_SHELLZX_SHELL/bin/zsh zx script.js该方式在 CI 中比较方便docs/cli.md 给出了 GitHub Actions 风格的 YAML 示例文档示例steps: - name: Run script run: zx script.mjs env: ZX_VERBOSE: true ZX_SHELL: /bin/bash内置预设useBash / usePowerShell / usePwsh除直接设置路径外docs/shell.md 和 docs/api.md 提供了三个切换预设从zx包导入import { useBash, usePowerShell, usePwsh } from zx usePowerShell() // Use PowerShell.exe usePwsh() // Rely on pwsh binary (PowerShell v7) useBash() // Switch back to bash各预设的具体行为来自 docs/api.mduseBash()启用 bash 预设把$.shell设为bash并把$.quote设为默认 bash 引号函数quoteusePowerShell()切换到 PowerShell并应用quotePowerShell做参数引号处理usePwsh()把 pwshPowerShell v7设为$.shell默认值。注意版本差异docs/migration-from-v7.md 说明 v8 起在 Windows 上默认不再寻找PowerShell仍需要时须显式调用usePowerShell或usePwsh启用。切换 shell 时注意 prefix 与引号$.prefix的默认值是set -euo pipefail;这是 bash 风格语句docs/configuration.md可通过--prefix覆盖例如zx --prefixset -e; script.mjs如果目标 shell 是 PowerShelldocs/configuration.md 的$.defaults示例中给出了对应的 postfix 写法$.postfix ; exit $LastExitCode // for PowerShell compatibility引号方面命令替换时的转义由$.quote控制useBash会将其设为 bash 版quoteusePowerShell会应用quotePowerShelldocs/api.md。如果手动设置$.shell指向非 bash 解释器需要留意默认 prefix 与引号函数是 bash 取向的这一点。确认切换是否生效文档没有提供专门的当前 shell 是什么的查询命令可用的判断手段是开启 verbose 模式docs/configuration.md 说明 verbose 模式下 zx 会打印所有执行的命令及其输出可通过$.verbose true或 CLI 参数--verbose开启zx --verbose script.mjs运行后若能看到自己脚本中的命令被逐条打印并产生输出说明该命令经由所选 shell 正常执行完成。参考docs/shell.mdshell 概念与三种直接设置方式docs/configuration.md$.shell、$.prefix、$.postfix、$.quote、$.defaultsdocs/cli.md--shell参数与ZX_前缀环境变量docs/api.mduseBash/usePowerShell/usePwshdocs/setup.md平台与运行时要求、Windows 下 bash 的说明。【免费下载链接】zxA tool for writing better scripts项目地址: https://gitcode.com/GitHub_Trending/zx/zx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →