需为脚本添加执行权限:运行chmod +x myscript.sh,再用./myscript.sh执行;若shebang不匹配默认shell(如zsh下写#!/bin/bash),应改为#!/usr/bin/env bash。

你在Mac终端里写好了一个.sh脚本,输入./myscript.sh却提示“Permission denied”,根本跑不起来——这不是脚本写错了,而是系统在拦你进门,它没给你那把“执行钥匙”。
确认脚本当前权限状态
打开终端,用cd命令进入脚本所在目录,例如:cd ~/Documents/scripts。
运行ls -l myscript.sh查看详细权限。如果输出中第三段(所有者权限)没有x,比如显示-rw-r--r--,说明脚本目前**不可执行**——这是绝大多数失败的起点。
用chmod +x添加可执行权限
执行命令:chmod +x myscript.sh。
这一步不是可选操作,是强制前提。【+x只作用于文件本身,不会修改内容、不触发重编译、也不影响shebang行是否正确】。它只是翻开了权限位中的“执行开关”,让系统允许把这个文本文件当作程序来调用。
再次运行ls -l myscript.sh,你会看到权限变成-rwxr--r--或类似含x的形态,此时权限已生效。
验证执行权限是否真正可用
方法一:用相对路径直接运行
输入./myscript.sh并回车。注意前面的./不能省——这是告诉Shell“就在当前目录找”,否则系统会在$PATH里盲目搜索,大概率报“command not found”。
方法二:用解释器显式调用
输入bash myscript.sh或zsh myscript.sh。这种方式绕过执行权限检查,但【不会加载脚本里的环境变量变更,也不会体现shebang声明的解释器意图】,仅作临时验证用。
方法三:检查shebang是否匹配当前Shell
用head -1 myscript.sh查看首行。如果是#!/bin/bash,而你的终端默认是zsh(macOS Catalina及之后默认),且系统没装bash或路径不对,即使加了+x也可能报错“bad interpreter”。此时需改shebang为#!/usr/bin/env bash或确保/bin/bash存在。











