macOS脚本无法运行的核心原因是系统要求主动信任授权,需三步解决:加执行权限(chmod +x)、清除隔离属性(xattr -d com.apple.quarantine)、为终端开启完全磁盘访问权限。
macos 上脚本无法运行,多数不是“你没权限”,而是系统明确要求你主动确认信任并授权执行。核心就三点:加执行权限、解除隔离属性、给终端开全盘访问权。
先加执行权限(最常见原因)
macOS 默认不给新脚本执行权,哪怕是你自己写的。
进入脚本所在目录后,运行:
- chmod +x 脚本名.sh(单个文件)
- chmod +x 脚本名.command(.command 文件同理)
- 如果脚本在桌面,可直接拖进终端:chmod +x ~/Desktop/xxx.sh
加完后用 ./脚本名.sh 运行;别直接输脚本名,否则 shell 找不到它。
清除 Gatekeeper 隔离属性(下载来的脚本必查)
从网页、微信、邮件下载的脚本会被打上“隔离”标记,即使有 x 权限也不让跑。
检查命令:
- ls -l@ 脚本名.sh —— 若输出里含 com.apple.quarantine,就是它拦着
- 清除命令:sudo xattr -d com.apple.quarantine 脚本名.sh
- 整批清理(比如整个下载目录):sudo xattr -r -d com.apple.quarantine ~/Downloads
开启终端的完全磁盘访问权限(Ventura 及更新系统高频问题)
macOS 13+ 默认禁止终端读写很多路径(如 /Users/Shared、/opt、挂载卷),哪怕用了 sudo 也会报错。
操作路径:
- 「系统设置」→「隐私与安全性」→「完全磁盘访问」
- 点锁图标解锁,把 Terminal.app 或 iTerm2 拖进去(或点 + 手动添加)
- 必须退出并重启终端,新权限才生效
其他关键检查点
- 脚本开头要有 Shebang:第一行写 #!/bin/bash 或 #!/bin/zsh,否则系统不知道用哪个解释器
- 别用中文路径或空格路径:运行时加引号也容易出错,建议移到英文路径下(如 ~/Scripts/)
- 家目录权限错乱?:右键「访达」中你的用户文件夹 →「显示简介」→「共享与权限」→ 确保你的用户名是「读与写」
- 需要改系统级路径?避开 SIP:不要硬写 /usr/bin 或 /var/run,改用 ~/bin 或 /usr/local/bin,并确保它们在 $PATH 前面


















