尽管 ls 显示文件不存在,但文件已找到

尽管 ls 显示文件不存在,但文件已找到

我正在尝试运行一个可见的脚本,ls但是当我尝试运行它时,它显示“没有这样的文件或目录”,这是怎么回事?

root@rx-texas:/home/7days/linux32#
root@rx-texas:/home/7days/linux32# ls
libstdc++.so.6  steamcmd
root@rx-texas:/home/7days/linux32# ./steamcmd
-bash: ./steamcmd: No such file or directory
root@rx-texas:/home/7days/linux32# less steamcmd
"steamcmd" may be a binary file.  See it anyway?

截屏

我正在运行 64 位 Debian,但文件是 linux32,这有关系吗?

这里还有输出ls -la

drwxrwxrwx 2 7days 7days    4096 Apr 22  2013 .
drwxrwxrwx 3 7days 7days    4096 Jan  9 22:44 ..
-rwxrwxrwx 1 7days 7days 3807525 Apr 22  2013 libstdc++.so.6
-rwxrwxrwx 1 7days 7days 5642610 Feb  5  2013 steamcmd

输出ldd steamcmd

not a dynamic executable

答案1

我正在运行 64 位 debian,但文件是 linux32,这有关系吗?

这不仅与错误有关,而且是错误的直接原因。

当您尝试在未安装 32 位运行时支持的 64 位系统上运行 32 位可执行文件时,会显示此误导性错误。./steamcmd缺少的不是 ,而是其加载程序。

有关详细解释,请参阅下面的答案在 64 位系统上运行 32 位二进制文​​件时收到“未找到”消息在 Unix.SE 上。

Debian 的建议解决方案是安装多架构支持:

dpkg --add-architecture i386 && apt-get update

答案2

检查脚本的第一行。如果您使用“#!”来引用可执行文件(例如 shell),请确保引用的文件:存在,并且可供尝试运行 steamcmd 的用户 ID 访问。

例如如果你有:

/bin/bash” 是 #!/bin/bash 的缩写。

在第一行,/bin/bash 必须存在。看起来您是 root,因此访问应该没有问题。确保文件路径中没有任何多余的空格,行尾也没有不可打印的字符。

相关内容