“没有这样的文件或目录”,但它存在
我只是想从命令行运行一个可执行文件./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