如何在基于MacOS的Github Action运行器中安装配置Bash 4及其他GNU工具
macOS 版 GitHub Actions 配置 Bash 4 及 GNU 工具解决方案
macOS 环境 GitHub Actions 配置不生效的核心原因是 CI 运行时使用非交互式 shell,不会加载
~/.bashrc、~/.bash_profile等用户级配置,同时chsh修改默认 shell 的操作对临时会话不生效。
- 第一步:安装依赖
直接通过 Homebrew 安装所需工具,执行命令:
若需其他 GNU 工具,可同步安装brew install bash gnu-sedgrepcoreutils等对应包。 - 第二步:配置全局环境变量
将 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
相关产品推荐
相关产品推荐

