Linux 可执行文件位于当前目录中,但可以';不能跑

Linux 可执行文件位于当前目录中,但可以';不能跑,linux,bash,unix,ubuntu,Linux,Bash,Unix,Ubuntu,我遇到了一个奇怪的问题,我在目录中有一个可执行文件,但当我试图运行它时,bash说它不存在: kiarashsadr@pandoras-box:~/Downloads/Tether/linux$ ls adb run.sh kiarashsadr@pandoras-box:~/Downloads/Tether/linux$ ls -l total 1204 -rwxrwxr-x 1 kiarashsadr kiarashsadr 1226659 Mar 9 2013 adb -rwxrw

我遇到了一个奇怪的问题,我在目录中有一个可执行文件,但当我试图运行它时,bash说它不存在:

kiarashsadr@pandoras-box:~/Downloads/Tether/linux$ ls adb run.sh kiarashsadr@pandoras-box:~/Downloads/Tether/linux$ ls -l total 1204 -rwxrwxr-x 1 kiarashsadr kiarashsadr 1226659 Mar 9 2013 adb -rwxrwxr-x 1 kiarashsadr kiarashsadr 521 Oct 29 2012 run.sh kiarashsadr@pandoras-box:~/Downloads/Tether/linux$ ./adb bash: ./adb: No such file or directory
wut???

如VOR73X所述,本例中的原因是该文件是64位体系结构上的32位可执行文件。您可以运行它,但需要一个兼容层来运行它。如果您有:

mintaka:/home/lserni # file ansi
ansi: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped
mintaka:/home/lserni # uname -a
Linux mintaka 4.0.1-1-default #1 SMP Wed Apr 29 15:04:53 UTC 2015 (e3a374a) x86_64 x86_64 x86_64 GNU/Linux
mintaka:/home/lserni # ./ansi
Syntax: ansi [file|-]
…否则您会得到“没有这样的文件或目录”

但是,可能还有其他原因导致无法运行“似乎”存在(甚至存在)的文件

缺少动态库会导致明显的错误(至少在我的系统Linux OpenSuSE 13.2上是这样):

另一种可能性。。。 …文件的名称与您认为的不同。你要的文件真的不在那里

例如(使用与以前相同的过时文件)

文件似乎在那里,但它的名称现在以空格结尾,所以正如您所期望的那样

mintaka:/home/lserni # ./ansi
bash: ./ansi: No such file or directory
当然,如果文件调用正确,则转义空间

mintaka:/home/lserni # ./ansi\
Syntax: ansi [file|-]
mintaka:/home/lserni #
其他技巧也是可能的(我曾经错误地对自己做过一次,并且看到一些蠕虫使用这个技巧来躲避一个随意的“ls”)。例如,UTF8不可见字符

试一试


验证名称是否正确。

您正在尝试在64位系统上运行32位可执行文件。Bash没有区分这种情况和“没有这样的文件或目录”情况

有关此主题的详细信息:


有关如何在64位系统上运行32位可执行文件的详细信息:

Show
ls-l
output。可能名称中有一个有趣的字符?b可能显示文件的前3行左右-如果有一个shebang行并且格式不正确,您可以得到它,因为找不到命令解释器。您的
adb
是1.2 MiB脚本吗?还是可执行程序?脚本是文本文件。看起来它可能是一个可执行文件。如果是这样,您从
文件/adb/bin/sh
中得到了什么?它们是同一类型吗?我似乎记得,当加载程序找不到可执行文件引用的动态库时,会弹出这个错误。这可能吗?此问题的答案显示了如何获取引用库的列表。您是否尝试在64位系统上运行32位程序?我可以确认您在这种情况下得到的错误是“没有这样的文件或目录”,就好像文件不在那里一样。
mintaka:/home/lserni # mv ansi 'ansi '
mintaka:/home/lserni # ls -la ansi*
-rwxr-xr-x 1 root root 14268 Sep 17 23:29 ansi
mintaka:/home/lserni # ./ansi
bash: ./ansi: No such file or directory
mintaka:/home/lserni # ./ansi\
Syntax: ansi [file|-]
mintaka:/home/lserni #
ls -la | hexdump -C