在使用 Linux 系统时,很多用户都会遇到一个经典报错:No such file or directory
。这类报错常见但原因复杂,可能涉及文件路径、可执行权限、库依赖等多个方面。本文将逐一分析该错误的常见原因,并提供系统性的排查与解决方案。

no such file or directory
一、错误信息说明
当你在终端运行某个命令或脚本时,系统返回如下错误信息:
bash: ./run.sh: No such file or directory
该错误并不一定意味着文件真的不存在,它也可能意味着:
- 文件路径错误
- 文件缺少执行权限
- 脚本解释器(如
/bin/bash
)不存在或格式错误 - 动态链接库缺失(特别是 ELF 可执行程序)
二、常见原因分析与解决方法
1. 路径错误
最基本的错误就是输入的路径不对,比如文件名拼写错误,或在当前目录下不存在该文件。
ls ./run.sh
如果输出为“没有那个文件或目录”,请确认你是否在正确的目录下,使用 pwd
查看当前路径,并用 ls
检查文件是否存在。
2. 缺少执行权限
文件存在但没有执行权限,也会导致该错误。
chmod +x run.sh
添加执行权限后重新尝试。
3. 脚本头部解释器路径错误
Shell 脚本通常以以下方式开头:
#!/bin/bash
如果指定的解释器不存在(比如系统中没有 /bin/bash
),系统会报 no such file or directory。请确认路径是否正确,可以用:
which bash
然后修改脚本头部为正确的解释器路径。
4. Windows/DOS 格式的脚本导致不可执行
从 Windows 系统复制过来的脚本可能带有 \r\n
(CRLF)换行符,Linux 不能识别,会导致解释器路径失效。
可用如下命令将其转换为 Unix 格式:
dos2unix run.sh
或使用 sed 快速修复:
sed -i 's/\r$//' run.sh
5. 可执行文件缺少依赖库
对于编译生成的二进制程序,即使文件存在,也可能因缺少动态库而运行失败。
可用如下命令检查依赖:
ldd ./your_program
若输出中有 not found
,则需安装相应的共享库。
三、其他排查建议
- 确认系统是否为 64 位 / 32 位不兼容
- 使用
file
命令查看文件类型:是否 ELF、是否文本文件等 - 脚本或程序是否被外部脚本删除或替换
四、总结
“No such file or directory” 虽然是常见的报错信息,但其本质可能与“文件真的不存在”无关。本文从路径、权限、格式、解释器、动态库等方面全面分析了可能原因,并提供了实用的排查与解决方法,帮助用户快速定位问题并恢复系统运行。
建议:若长期使用 Linux 或开发环境,建议熟练掌握文件权限管理、换行符转换、依赖库检测等基本技能,以提升系统问题处理能力。