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

Termux直接运行Bash脚本报Bad Interpreter权限拒绝 加bash可执行

Termux下Bash脚本Bad Interpreter报错排查修复

遗漏的核心排查点

  • 分区挂载权限限制(最高发的Termux特有问题)
    执行mount | grep $(pwd)查看当前脚本所在目录的挂载参数,如果输出包含noexec标识,就是问题根源。安卓系统默认对共享存储(/sdcard、/storage/emulated/0路径)、外置SD卡分区加noexec挂载限制,禁止直接运行分区内的任何可执行文件,该限制是系统级的,无论怎么修改文件权限(包括你设置的chmod 777)都无法绕过。
    修复方法:将脚本移动到Termux私有可执行目录,比如执行mv ./getcrypt.sh ~/,切换到家目录后再执行脚本即可。
  • 脚本换行符格式错误
    移动端部分文本编辑器默认使用Windows风格的CRLF换行符,会导致脚本首行shebang末尾多一个不可见的\r回车符,系统识别解释器路径时会把该字符计入路径,触发解释器识别异常。
    修复方法:执行sed -i 's/\r$//' getcrypt.sh清除多余回车符,或安装dos2unix工具执行dos2unix getcrypt.sh将脚本转为Unix标准的LF换行格式。
  • 文件名输入错误
    你提供的执行记录中先后出现了getcrypt.sh和get-crypt.sh两个不同文件名,差一个连字符,执行命令前先通过ls核对当前目录下的实际文件名,避免输错路径触发文件不存在报错。

现象对应说明

你之前配置的chmod权限、默认shell切换、PATH优先级调整都是正确的,但这些配置仅在支持exec权限的挂载分区上生效,碰到noexec系统限制会直接被拦截,才会出现直接执行脚本报权限拒绝的问题。
bash 脚本名可以正常执行的原因是:该命令先启动Termux私有目录下的bash程序(本身具备可执行权限),再把脚本作为普通文本读取解析,不需要脚本本身具备可执行权限,也不要求脚本所在分区支持exec挂载,因此可以正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 08:33:11