当前目录存在transactor可执行文件运行时报not found如何解决
可执行文件存在但运行提示not found的解决方案
你遇到的该报错绝大多数场景是shell脚本首行shebang指定的解释器不存在,其次是挂载参数、文件名隐藏字符等问题,按以下优先级排查修复即可:
步骤1:检查脚本shebang解释器(最高优先级)
你当前的transactor文件仅698字节,属于shell脚本而非二进制可执行文件,首先查看首行指定的解释器是否存在:
head -n 1 transactor
如果输出为#!/bin/bash,而你当前运行环境是精简Linux发行版(从路径格式看大概率是Alpine类容器环境),默认没有预装bash,只有sh解释器,就会触发这个报错。
修复方法二选一:
- 安装对应解释器:Alpine系统执行
apk add --no-cache bash,Debian/Ubuntu系统执行apt update && apt install -y bash - 修改shebang行:如果脚本没有使用bash专属语法,可以把首行修改为
#!/bin/sh即可正常运行
步骤2:检查分区挂载参数
如果当前目录所在的分区挂载时添加了noexec参数,就算文件有执行权限也无法运行,执行以下命令验证:
mount | grep /datomic-pro-1.0.6316
如果输出结果中包含noexec标记,执行以下命令重新挂载并赋予执行权限:
mount -o remount,exec /datomic-pro-1.0.6316
步骤3:检查文件名是否包含隐藏不可见字符
如果文件命名时意外加入了空格、换行等不可见字符,ls命令正常显示但实际执行时找不到对应文件,执行以下命令查看原始文件名:
ls -1b
如果输出的transactor文件名带有\之类的转义字符,根据实际情况执行重命名操作即可:
# 示例为文件名末尾带空格的重命名命令,按需调整 mv 'transactor\ ' transactor
步骤4:二进制兼容校验(仅适用于二进制可执行文件场景)
如果是二进制可执行文件出现该报错,大概率是架构不兼容,比如在ARM架构设备上运行x86编译的二进制,执行以下命令查看文件架构:
file transactor
根据输出的架构信息,安装对应架构的兼容层或者替换为适配当前架构的版本即可。
内容的提问来源于stack exchange,提问作者zendevil.eth
相关产品推荐
相关产品推荐

