Mac/Linux下执行Shell脚本提示"Permission denied"的完美解决办法
内容
在日常开发中,当我们尝试在 macOS 或 Linux 系统的终端中运行 Shell 脚本(例如安装脚本)时,可能会遇到类似以下的错误提示:
```bash
DP@lib00-iMac ~/sys_keep/wiki.lib00 % scripts/install.sh
zsh: permission denied: scripts/install.sh
```
## 原因分析
在 Unix/macOS 操作系统中,出于安全考虑,并非所有文件都可以直接作为程序运行。直接通过路径执行文件要求该文件必须具备可执行(`x`, execute)权限。我们从外部下载的脚本代码(如 `lib00` 项目的安装包)或新建的脚本,默认通常只有读(`r`)和写(`w`)权限,因此系统会拒绝执行并抛出 "permission denied" 错误。
---
## 解决方案
### 方法一:赋予文件可执行权限(推荐)
这是最标准且一劳永逸的做法。使用 `chmod` 命令为脚本添加执行权限:
```bash
# 为脚本添加可执行权限
chmod +x scripts/install.sh
# 再次运行脚本
./scripts/install.sh
```
### 方法二:显式调用解释器执行
如果你不想修改文件本身的权限,或者只是临时运行一次,可以直接调用 `bash` 或 `sh` 解释器来执行该脚本。此时解释器只需要具有读取该文件的权限即可:
```bash
bash scripts/install.sh
```
---
## 扩展技巧:如何查看文件权限?
你可以使用 `ls -l` 命令来查看当前文件的权限状态:
```bash
ls -l scripts/install.sh
# 输出示例: -rw-r--r-- 1 DP staff 128 May 10 10:00 scripts/install.sh
```
如果最前面的一串字符中没有 `x`(如 `-rw-r--r--`),就说明缺少执行权限。执行 `chmod +x` 后,它会变成 `-rwxr-xr-x`,此时就可以顺利运行了。更多技术文档与疑难解答,请访问 wiki.lib00.com。
关联内容
macOS 内存盘(RAM Disk)深度解析:空间是动态分配还是固定占用?
时长: 00:00 | DP | 2026-07-09 20:02:36告别桌面杂乱:如何在 macOS 中通过命令行修改截图默认保存位置
时长: 00:00 | DP | 2026-07-10 08:05:12macOS 进阶指南:如何优雅地设置程序开机自启动?
时长: 00:00 | DP | 2026-07-07 09:20:15解决 Nginx 访问 PHP Imagick 生成的 WebP 图片提示 Permission Denied (13) 错误
时长: 00:00 | DP | 2026-07-05 21:17:00提升Mac工作效率:如何在macOS中将F1-F12设置为标准功能键
时长: 00:00 | DP | 2026-07-12 08:15:37Mac 技巧:如何让 macOS 顶部菜单栏时钟显示秒数?
时长: 00:00 | DP | 2026-07-12 20:18:13突破 macOS 限制:如何设置一位数极简开机密码
时长: 00:00 | DP | 2026-07-13 08:20:49解决 Mac mini 无法接收手机短信 (SMS) 及 iMessage 同步卡死的问题
时长: 00:00 | DP | 2026-07-06 22:07:00Compressor 导出视频文件名点号变下划线?教你几招轻松解决
时长: 00:00 | DP | 2026-07-17 20:44:15别再用 rm 删除日志了!Linux 下秒清 log 文件的 5 种高阶姿势
时长: 00:00 | DP | 2026-07-18 20:49:27告别滚动消除:如何在 macOS iTerm2 中显示并保留全部终端历史记录
时长: 00:00 | DP | 2026-07-21 21:05:04运维实战:如何安全清空运行中的 Docker 容器日志?
时长: 00:00 | DP | 2026-07-27 09:33:42告别逐行删除:Linux 下高效批量清理与编辑 Crontab 定时任务指南
时长: 00:00 | DP | 2026-07-30 09:49:20Cron 任务执行失败?解密“docker: command not found”的终极解决方案
时长: 00:00 | DP | 2026-08-01 09:59:44群晖 NAS 部署 MySQL Docker 踩坑记:轻松搞定“Permission Denied”权限错误
时长: 00:00 | DP | 2025-12-03 21:19:10macOS 新终端无法识别 nvm/node 命令?只需两步,永久解决!
时长: 00:00 | DP | 2025-12-04 09:35:00一行命令搞定网站稳定性测试:终极 Curl 延迟检测 Zsh 脚本
时长: 00:00 | DP | 2025-12-07 23:25:50Docker 容器如何访问 Mac 主机?终极指南:轻松连接 Nginx 服务
时长: 00:00 | DP | 2025-12-08 23:57:30相关推荐
解密SEO Canonical标签:从入门到多语言网站实战
00:00 | 118次你是否对 <link rel="canonical"> 标签感到困惑?本文将深入浅出地解释其作用,解...
告别代码冗余:优雅重构你的 JavaScript Markdown 渲染器
00:00 | 167次在前端开发中,我们经常需要处理多个Markdown渲染实例,这很容易导致代码重复和维护困难。本文将通...
WebP vs. JPG:为什么我的图片大小相差8倍?深度解析与实战指南
00:00 | 139次一张图片,WebP格式仅300KB,而JPG格式却高达2.4MB,这种巨大的差异从何而来?本文将深入...
多语言网站SEO终极对决:URL参数、子域名、子目录,哪个才是最优解?
00:00 | 194次正在为你的多语言网站选择URL结构吗?本文深入剖析了URL参数、子域名和子目录三种常见方案在SEO方...