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

Ubuntu下Hyperledger Explorer启动脚本执行失败:文件不存在错误求助

解决Ubuntu中执行start.sh提示“no such file or directory”的问题

我之前帮不少人排查过这种“明明文件就在眼前却执行不了”的坑,大概率是下面几个原因,咱们一步步来解决:

  • 先确认脚本有没有执行权限
    先看下文件的权限详情:

    ls -l start.sh
    

    如果输出里权限列是-rw-r--r--这种没有x(可执行)标记的,那肯定跑不起来,给它加上权限就行:

    chmod +x start.sh
    

    加完再试试./start.sh。

  • 排查Windows换行符的锅
    要是你这个脚本是在Windows下编辑过或者从Windows机器传过来的,大概率是换行符出问题了——Linux用LF,Windows用CRLF,bash会把CR当成文件名的一部分,自然找不到。
    验证一下:

    cat -A start.sh
    

    要是每行结尾都有^M$,那就是这个问题。装个工具转一下:

    sudo apt install dos2unix
    dos2unix start.sh
    

    转换完再执行试试,应该能正常跑了。

  • 检查文件名有没有隐藏字符
    有时候复制粘贴文件名或者用某些工具生成文件时,会不小心带上空格、制表符这类看不见的字符,看起来是start.sh,实际文件名带了额外字符。
    用这个命令看原始文件名:

    ls -b
    

    要是看到start.sh旁边有\ 或者其他转义字符,那就重命名它:

    # 把带隐藏字符的文件名用引号括起来,替换成干净的文件名
    mv "start.sh" start.sh
    

    或者更稳妥的,用inode号来重命名:

    # 先查文件的inode号
    ls -i
    # 假设查到的inode是12345,执行下面的命令
    find . -inum 12345 -exec mv {} start.sh \;
    
  • 看看脚本的shebang行是不是写错了
    脚本第一行的#!/bin/bash是指定解释器的,要是路径不对也会报错。先看第一行:

    head -n 1 start.sh
    

    再确认bash在你系统里的实际路径:

    which bash
    

    如果输出是/usr/bin/bash,那把脚本第一行改成#!/usr/bin/bash,或者用更通用的#!/usr/bin/env bash,这样会自动找系统里的bash路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:42:48