微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

可执行文件在当前目录但不能运行

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

kiarashsadr @ pandoras-Box:〜/ Downloads / Tether / linux $ ls

adb run.sh

kiarashsadr @ pandoras-Box:〜/ Downloads / Tether / linux $ ls -l

共1204个

-rwxrwxr-x 1 kiarashsadr kiarashsadr 1226659 Mar 9 2013 adb

-rwxrwxr-x 1 kiarashsadr kiarashsadr 521 2012年10月29日run.sh

kiarashsadr @ pandoras-Box:〜/ Downloads / Tether / linux $ ./adb

bash:./adb:没有这样的文件或目录

从file输出

kiarashsadr @ pandoras-Box:〜/ Downloads / Tether / linux $文件adb

adb:GNU / Linux 2.6.8的ELF 32位LSB可执行文件,Intel 80386,版本1(SYSV),dynamic链接(使用共享库)

武汉理工大学?

在Bash脚本和捕获输出时使用&符号(&)在后台使用叉子命令

将命令输出redirect到bash中的variables失败

subprocess在bash中

一个进程已经启动后,grep过滤输出

文件名保存为递增的数字

Shell脚本不会识别heredoc分隔符

在bash脚本中设置variables

如何build立延迟/缓冲pipe道?

在sh脚本中,获取后台进程的pid

zsh和普通shell如何共享环境variables和别名,而不需要相互复制

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

有关此主题的更多信息: 在Ubundu 64位安装错误下执行32位代码 – 没有这样的文件或目录

有关如何在64位系统上运行32位可执行文件的更多信息: https : //askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit

如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):

./test: error while loading shared libraries: libcap.so.2: cannot open shared object file: No such file or directory

另一种可能性

…该文件没有按照您的想法命名。 你要求的文件真的不在那里!

例如(使用与以前相同的废弃文件

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')。 例如UTF8不可见字符。

尝试

ls -la | hexdump -C

来验证这个名字确实是它应该是的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐