You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在基于MacOS的Github Action运行器中安装配置Bash 4及其他GNU工具

macOS 版 GitHub Actions 配置 Bash 4 及 GNU 工具解决方案

macOS 环境 GitHub Actions 配置不生效的核心原因是 CI 运行时使用非交互式 shell,不会加载 ~/.bashrc、~/.bash_profile 等用户级配置,同时 chsh 修改默认 shell 的操作对临时会话不生效。

  • 第一步:安装依赖
    直接通过 Homebrew 安装所需工具,执行命令:
    brew install bash gnu-sed
    
    若需其他 GNU 工具,可同步安装 grep coreutils 等对应包。
  • 第二步:配置全局环境变量
    将 GNU 工具及新版 Bash 的路径写入 GitHub Actions 全局环境变量文件 GITHUB_ENV,确保所有后续步骤都能读到正确的 PATH 优先级:
    echo "PATH=$(brew --prefix)/opt/gnu-sed/libexec/gnubin:$(brew --prefix)/bin:$PATH" >> $GITHUB_ENV
    
    其中 $(brew --prefix)/opt/gnu-sed/libexec/gnubin 是不带 g 前缀的 GNU sed 路径,添加后直接调用 sed 即可使用 GNU 版本,不需要额外修改脚本里的命令名。
  • 第三步:指定脚本解释器
    所有自定义 Bash 脚本的首行 shebang 统一写为 #!/usr/bin/env bash,不要写硬编码的 #!/bin/bash,后者会调用系统默认的 Bash 3.x 版本。

完整 Workflow 参考

name: 测试 GNU 工具执行
on: [push, pull_request]
jobs:
  macos-test:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - name: 安装并配置 Bash 4 及 GNU 工具
        run: |
          brew install bash gnu-sed
          echo "PATH=$(brew --prefix)/opt/gnu-sed/libexec/gnubin:$(brew --prefix)/bin:$PATH" >> $GITHUB_ENV
      - name: 版本验证
        run: |
          bash --version
          sed --version
      - name: 执行自定义脚本
        run: ./your-custom-script.sh

注意事项

  • 不需要执行 chsh 修改默认 shell,CI 临时会话不会生效
  • 不要将 PATH 配置写入个人 shell 配置文件,非交互式会话不会加载
  • 若安装了其他 GNU 工具,将对应包的 gnubin 路径追加到 PATH 开头即可,比如 GNU grep 对应路径是 $(brew --prefix)/opt/grep/libexec/gnubin

内容的提问来源于stack exchange,提问作者markusthoemmes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:42:01