You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Linux下执行./xx.sh提示Permission denied但bash xx.sh可正常运行

权限问题根因分析

两种执行方式的权限要求存在本质差异,你遇到的报错核心原因是文件本身的执行权限满足要求,但更高层级的限制阻断了直接执行的路径,具体如下:

  • 两种执行方式的权限逻辑差异
    • 执行bash xx.sh时,系统仅启动bash进程读取脚本内容解析运行,仅要求当前用户对xx.sh拥有读权限,不需要脚本本身有执行权限,所以能正常运行。
    • 执行./xx.sh时,系统会先尝试将该文件作为独立可执行文件加载,除了要求脚本本身有执行权限外,还有额外的权限校验要求。
  • 两个常见的核心原因:
    1. 脚本所在目录缺少执行权限
      目录的x(可执行)权限的作用是允许用户访问目录下文件的元数据、执行目录内的可执行文件。如果当前用户对存放xx.sh的目录没有x权限,就算脚本本身权限正常,执行./xx.sh时也会触发权限拒绝报错。
    2. 脚本所在分区挂载了noexec参数
      如果xx.sh存放在用noexec选项挂载的分区中,系统会禁止该分区下所有文件的直接执行操作,哪怕文件本身配置了执行权限也无法直接运行,但bash xx.sh属于读取文件内容交给解释器执行的操作,不受noexec参数限制,所以可以正常运行。

你可以执行pwd查看当前目录路径,先运行ls -ld .查看当前目录的权限配置,再运行mount | grep 对应分区路径确认分区挂载参数,即可定位具体原因。

内容的提问来源于stack exchange,提问作者YoramEi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:06:06