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

发布时间: 2026-07-06
作者: DP
浏览数: 0 次
内容
在日常开发中,当我们尝试在 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。
关联内容
相关推荐
搞定 Chart.js:如何用双Y轴优雅展示量级差异巨大的数据?
00:00 | 171次

在同一个 Chart.js 图表中同时展示累计总数(如总视频数上千)和每日新增(个位数)时,是否遇到...

PHP高手进阶:如何优雅地用一个数组的值过滤另一个数组的键?
00:00 | 131次

在PHP开发中,经常需要根据一个列表(数组)来筛选另一个关联数组的数据。本文详细介绍了两种核心方法:...

CSS 解惑:为什么我的 :nth-child(1) 选择器不起作用?
00:00 | 62次

你是否曾困惑于为什么 `:nth-child(1)` 无法选中你期望的第一个元素,反而需要用 `:n...

深入解析:向 MySQL DATETIME 字段插入 Unix 时间戳的正确姿势与陷阱
00:00 | 13次

将一个Unix时间戳(如1764975600)直接插入MySQL的DATETIME字段会成功吗?答案...