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

使用subprocess.call运行shell脚本报Permission denied权限错误

问题根源

两种调用方式的权限要求完全不同:

  • 手动执行bash download_R1.sh时,是将脚本作为参数传入bash程序,全程由bash读取脚本内容解释执行,仅需要当前用户对脚本有读权限即可,不需要脚本本身具备可执行权限。
  • subprocess.call('./download_R1.sh')的逻辑是让操作系统直接将该文件作为可执行程序启动,此时系统会强制校验文件的可执行权限位,未开启可执行权限时就会抛出PermissionError: [Errno 13] Permission denied,和你在终端直接敲./download_R1.sh(不带bash前缀)的报错逻辑完全一致。
解决方案

二选一即可:

  • 方案1:对齐手动执行的逻辑,显式调用bash运行脚本,无需修改文件权限,推荐写法:
import subprocess
downR1 = subprocess.call(['bash', './download_R1.sh'])

注意:subprocess传参优先使用列表格式,避免路径包含空格、特殊字符时出现解析错误。

  • 方案2:给脚本添加可执行权限后直接调用:
    1. 终端执行chmod +x download_R1.sh为脚本开启可执行位
    2. 确认脚本首行写对shebang声明#!/bin/bash,指定用bash解释脚本
    3. 原有subprocess.call('./download_R1.sh')代码即可正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:45:44