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

如何在M1 Mac上使用readlink -e并兼容bash脚本(无需关闭系统完整性保护)

我之前也碰到过一模一样的问题,M1 Mac的系统完整性保护(SIP)确实锁死了/usr/bin目录,没法直接在里面创建软链。不过不用慌,有几个不用关闭SIP的实用解决办法,亲测有效:

  • 方案一:将软链放到不受SIP保护的目录
    系统的/usr/bin受SIP保护无法修改,但/usr/local/bin是用户可自由操作的目录,而且默认在系统PATH中的优先级比/usr/bin高。你只需要执行这条命令就能创建替代的软链:

    ln -s /opt/homebrew/bin/greadlink /usr/local/bin/readlink
    

    完成后,不管是在终端直接运行还是bash脚本里调用readlink -e,都会优先使用这个软链指向的greadlink,完美适配原有逻辑。

  • 方案二:修改脚本直接调用greadlink
    如果不想折腾软链,也可以直接调整你的bash脚本:

    1. 在脚本开头添加PATH配置,确保brew的bin目录被优先识别:
      export PATH="/opt/homebrew/bin:$PATH"
      
    2. 把脚本里所有的readlink -e替换成greadlink -e
      这样脚本就能直接调用brew安装的greadlink,完全绕开系统自带的版本。
  • 方案三:在脚本中定义兼容函数(保留原有写法)
    要是不想逐行修改脚本里的readlink,可以在脚本开头定义一个函数,让readlink自动转发所有参数给greadlink:

    export PATH="/opt/homebrew/bin:$PATH"
    readlink() {
        greadlink "$@"
    }
    

    这样脚本里原来的readlink -e写法完全不用改动,函数会自动帮你处理参数转发,兼容性拉满。

备注:内容来源于stack exchange,提问作者zlZimon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:13:07