当前位置: 首页 > news >正文

Shell 脚本执行报错 permission denied 怎么解决?

遇到 Shell 脚本执行报 permission denied,最常见的原因是脚本文件缺少执行权限位,或者当前用户没有权限读取该文件。

先说结论:优先检查文件权限位,其次尝试用 bash 显式调用脚本。

  • 先确认:使用 ls -l 查看文件权限位是否包含 x
  • 先处理:通过 chmod 添加执行权或用解释器直接运行
  • 再验证:重新执行脚本并检查退出码是否为 0

命令速用版

如果你需要立刻让脚本跑起来,可以尝试以下两条命令中的一条:

chmod +x ./script.sh && ./script.sh

或者不修改权限,直接调用解释器:

bash ./script.sh

注意:第二种方法不需要执行权限,但要求脚本内容符合 bash 语法。

为什么会这样

Linux 系统对文件权限有严格控制,执行脚本本质上是请求内核加载并运行该文件。报错通常涉及三个层面:

1. 权限位缺失:文件没有 x(execute)标志,普通用户无法直接执行。

2. 解释器问题:脚本第一行 shebang 指定的解释器路径不存在,或文件格式不对。

3. 挂载选项:文件系统被挂载为 noexec,禁止任何二进制或脚本执行。

分步处理

按照以下顺序排查,每一步确认后再进行下一步:

1. 检查文件权限

运行 ls -l 脚本名,查看输出结果。如果权限位类似 -rw-r`--r--`,说明缺少执行权。

解决方法:chmod +x 脚本名

2. 检查解释器路径

运行 head -n 1 脚本名,确认第一行是否为 #!/bin/bash 或 #!/usr/bin/env bash。

如果路径错误,修改第一行或直接用 bash 运行。

3. 检查挂载选项

如果权限正确仍报错,运行 findmnt -no OPTIONS . 查看当前目录所在分区的挂载选项。

如果输出中包含 noexec,说明该分区禁止执行。建议将脚本移到用户家目录或其他允许执行的分区。

4. 检查文件换行符

如果报错提示 bad interpreter: No such file or directory 但路径存在,可能是 Windows 换行符导致。

修复命令:sed -i 's/\r$//' 脚本名 或 dos2unix 脚本名

怎么验证是否生效

执行脚本后,立即运行 echo $? 检查退出码。

如果返回 0,表示脚本成功执行完毕;如果返回 126 或 127,通常代表权限问题或命令未找到。

同时观察脚本预期的输出是否正常打印,没有报错信息。

常见坑

1. Windows 换行符:脚本在 Windows 编辑后上传,可能包含 CRLF 换行符,导致解释器识别失败。

2. SELinux 限制:在 CentOS 或 RHEL 系统上,即使权限正确,SELinux 上下文错误也会拦截执行。

注意:仅在测试环境临时执行 setenforce 0,排查后请立即恢复 (setenforce 1),生产环境建议调整文件上下文 (chcon) 而非关闭策略。

3. 目录权限:父目录如果没有 x 权限,用户也无法进入目录执行其中的脚本。

原文链接:https://www.zjcp.cc/ask/10954.html

http://www.jsqmd.com/news/805646/

相关文章:

  • Perplexity+arXiv科研闭环构建(从Query生成→PDF元数据提取→引用图谱可视化)
  • 如何为知识图谱选择合适的本体(Ontology)抽取方法
  • Brigadier:Mac Boot Camp驱动自动化部署技术方案
  • 3分钟极速突破:ctfileGet城通网盘解析工具完全指南
  • UEViewer技术深度解析:跨越四代虚幻引擎的逆向工程杰作
  • 本地化AI代码助手部署指南:从模型选型到性能调优
  • 【收藏备用】2026年大模型风口来袭!程序员小白入门指南
  • 3分钟掌握APK Installer:在Windows上安装Android应用的终极方案
  • AI应用后端框架aikit:快速构建生产级大模型服务的开源解决方案
  • 3步解锁专业工具:开源激活方案完整指南
  • Arm C1-SME2架构矩阵计算加速与性能监控解析
  • 大模型后训练新范式:On-Policy Distillation(OPD)原理、流程与实验实践详解
  • 从数据中心视角聊token
  • EdgeRemover终极指南:三步轻松卸载Windows自带Edge浏览器,让你的系统更清爽
  • 实证论文破局关键:虎贲等考 AI 数据分析,零代码跑出期刊级结果
  • 如果用 句式容器的权重化和管道化 这样的机制,那是否每个 句子和每个短句的匹配都得弄一套【句式容器的权重化】的配置,有多少个句式和句子,就得多少套规则??
  • LangChain+FAISS 向量数据库搭建轻量化 RAG 应用
  • 终极指南:如何用Path of Building打造流放之路完美构筑方案
  • 一个普通人,写《凰标》挑战整个行业规则@凤凰标志
  • 基于ProseMirror与AI集成的现代化编辑器架构解析与实践
  • FastGithub:5分钟解决GitHub访问缓慢的终极方案
  • 当语音识别遇上方言和行业术语:如何让Vosk听懂你的“行话“
  • 算法将驱动一切:边缘AI智能体如何重塑智能系统
  • 抖音无水印下载神器:douyin-downloader完整指南,轻松保存高清视频
  • 【收藏级】2026年大模型系统化学习路线(小白/程序员必看),避开弯路快速上岸
  • AI编程如何学?OpenAI 亲自下场,19家顶级机构联手, 成立FDE公司#前端部署工程师
  • Figma UI 与 MCP 协议:用自然语言自动化设计工作流
  • FPGA雷达信号处理避坑指南:数字下变频(DDC)与脉冲压缩(PC)的截位、溢出与精度控制
  • RapidVideOCR终极指南:高效视频硬字幕提取与SRT生成完整方案
  • 终极浏览器广告拦截指南:5分钟掌握uBlock Origin高效设置