给 macos 脚本赋予可执行权限需三步:①用 chmod +x 添加执行位;②用 xattr -d com.apple.quarantine 清除隔离属性;③在系统设置中为终端开启“完全磁盘访问”权限,缺一不可。
给 macos 脚本文件赋予可执行权限,核心是三件事:加执行位、清隔离属性、开终端磁盘权限。缺一不可,尤其新系统上只做 chmod 往往还是报错。
用 chmod 添加执行权限
脚本(如 deploy.sh 或 backup.command)默认没有执行权,必须手动开启:
- 打开终端,用 cd 进入脚本所在目录,例如:
cd ~/Downloads - 运行:
chmod +x your-script.sh(或直接把文件拖进终端补全路径) - 验证是否成功:
ls -l your-script.sh,输出首列应含 x,比如-rwxr-xr-x - 安全起见,也可只对当前用户授权:
chmod u+x your-script.sh
清除下载带来的隔离属性
从浏览器、邮件等下载的脚本会被 macOS 自动标记为“可疑”,即使权限正确也会拒绝执行:
- 运行:
xattr -d com.apple.quarantine /path/to/your-script.sh(路径可直接拖入终端) - 检查是否清理干净:
ls -l@ your-script.sh,若输出中不再出现 com.apple.quarantine 就说明已移除 - 如果提示 No such xattr,代表本来就没有,跳过即可
授予终端“完全磁盘访问”权限
macOS Catalina 及之后版本限制终端访问桌面、文档、下载等敏感位置,脚本一旦读写这些目录就会卡在 Operation not permitted:
- 打开「系统设置 → 隐私与安全性 → 完全磁盘访问权限」
- 点右下角锁图标解锁(需输入密码)
- 把 终端 拖进列表,或点击 + 号添加:
/Applications/Utilities/Terminal.app - 若使用 iTerm2 等第三方终端,也要同样添加对应应用
顺便确认 shebang 和运行方式
权限和隔离都正常但脚本仍不工作?可能是解释器没配对或调用错了:
- 脚本第一行必须是有效的 shebang,例如:
#!/bin/bash或#!/usr/bin/env bash - 不要用
sh your-script.sh来绕过权限——它会忽略 shebang,还可能用错 shell - 正确做法是:确保已
chmod +x后,直接运行./your-script.sh











