“没有这样的文件或目录”,但它存在

我只是想从命令行运行一个可执行文件./arm-mingw32ce-g++ ,但是我得到错误信息,

 bash: ./arm-mingw32ce-g++: No such file or directory 

我正在运行Ubuntu Linux 10.10。 ls -l列表

 -rwxr-xr-x 1 root root 433308 2010-10-16 21:32 arm-mingw32ce-g++ 

使用sudo( sudo ./arm-mingw32ce-g++ )给出

 sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory 

我不知道为什么操作系统甚至无法看到文件。 有什么想法吗?

这个错误可能意味着./arm-mingw32ce-g++不存在(但它确实存在),或者它存在并且是由内核识别的dynamic链接的可执行文件,但其dynamic加载器不可用。 你可以通过运行ldd /arm-mingw32ce-g++来看到需要什么dynamic加载器。 标记为not found任何东西都是您需要安装的dynamic加载器或库。

如果您试图在amd64安装上运行32位二进制文​​件:

  • 直到Ubuntu 11.04,安装软件包ia32-libs
  • 在Ubuntu 11.10上,安装ia32-libs-multiarch
  • 从12.04开始,安装ia32-libs-multiarch ,或者除了:amd64软件包外,还要select合理的一套:i386软件包。

如果尝试运行脚本并且shebang拼写错误,也可能会发生此错误。 请确保它读取#!/bin/sh#!/bin/bash或您正在使用的任何解释器。

当我尝试在Ubuntu上构buildSelenium源代码时遇到了这个错误。 即使我已经涵盖了所有先决条件,简单的shell脚本和正确的shebang仍然无法运行。

 file file-name # helped me in understanding that CRLF ending were present in the file. 

我在Vim中打开了这个文件,我可以看到,这是因为我曾经在Windows机器上编辑过这个文件,它是DOS格式。 我用下面的命令将文件转换为Unix格式:

 dos2unix filename # actually helped me and things were fine. 

我希望每当我们跨平台编辑文件时,我们应该小心,我们也应该照顾文件格式。

当试图运行一个Python脚本时,我有同样的错误信息 – 这不是@ Warpspace的预期用例(请参阅其他评论),但这是我search的热门search,所以也许有人会觉得它有用。

在我的情况下,这是DOS行结束( \r\n而不是\n ),shebang行( #!/usr/bin/env python )会绊倒。 一个简单的dos2unix myfile.py修复了它。

我得到了一个简单的bash脚本不会有32/64位问题的同样的错误。 这可能是因为您正在尝试运行的脚本中存在错误。 这个Ubuntu的论坛post指出,在正常的脚本文件中,你可以在前面添加“sh”,你可能会得到一些debugging输出。 例如

 $ sudo sh arm-mingw32ce-g++ 

并看看你是否得到任何输出。

在我的情况下,实际的问题是,我试图执行的文件是Windows格式而不是Linux。

我在我的Mac上创build的文件有同样的问题。 如果我试图运行在./filename的shell中,我得到了文件未find的错误消息。 我认为文件有问题。

我做了什么:

打开服务器的ssh会话
猫的文件名
将输出复制到剪贴板
rm文件名
触摸文件名
vi文件名
我为插入模式
粘贴剪贴板中的内容
ESC结束插入模式
:WQ!

这对我有效。

我得到这个错误“No such file or directory”但它存在,因为我的文件是在Windows中创build的,我试图在Ubuntu上运行它,并且文件包含无效15 \ r有一个新的行在那里。 我刚刚创build了一个截断不需要的东西的新文件

 sleep: invalid time interval '15\r' Try 'sleep --help' for more information. script.sh: 5: script.sh: /opt/ag/cont: not found script.sh: 6: script.sh: /opt/ag/cont: not found root@Ubuntu14:/home/abc12/Desktop# vi script.sh root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 0000000 # ! / usr / bin / envb 0000020 ash \r \nwgethttp : / 0000400 : 4 1 2 0 / \r \n 0000410 root@Ubuntu14:/home/abc12/Desktop# tr -d \\015 < script.sh > script.sh.fixed root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 0000000 # ! / usr / bin / envb 0000020 ash \nwgethttp : / / 0000400 / \n 0000402 root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed 

我刚刚在mingw32 bash遇到了这个问题。 我已经从Program Files (x86)\nodejs执行了node / npm,然后将它们移到disabled目录中(实质上是从path中删除它们)。 我也有Program Files\nodejs (即64位版本)的path,但只有在x86版本。 重新启动bash shell之后,可以find64位版本的npm。 node始终正常工作(使用在x86版本移动时更改的node -v进行检查)。

我认为hash -r会工作,而不是重新启动bash: https : //unix.stackexchange.com/a/5610