Mac/Linux下执行Shell脚本提示"Permission denied"的完美解决办法

发布时间: 2026-07-06
作者: DP
浏览数: 65 次
内容
在日常开发中,当我们尝试在 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。
关联内容
相关推荐
Docker Cron终极指南:从宿主机轻松调度PHP容器任务
00:00 | 139次

在容器化时代,如何优雅地执行定时任务?本文深入探讨了如何利用宿主机的 Cron 服务来调度 Dock...

Casdoor Docker部署终极指南:一行命令搞定专业级部署
00:00 | 194次

本文为您提供了一个详尽的 `docker run` 命令来部署 Casdoor (casbin/ca...

PHP大小写转换完全指南:`strtolower()` vs `mb_strtolower()`,别再用错了!
00:00 | 132次

在PHP中处理字符串时,将大写转换为小写是一个常见需求。本文将深入探讨PHP中三种核心的大小写转换函...

Linux `rm` 命令终极指南:如何安全高效地删除文件夹
00:00 | 225次

掌握 Linux `rm` 命令是系统管理的基本功。本文将详细解析如何使用 `rm` 命令删除文件夹...