![尽管 ls 显示文件不存在,但文件已找到](https://linux22.com/image/696602/%E5%B0%BD%E7%AE%A1%20ls%20%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E4%B8%8D%E5%AD%98%E5%9C%A8%EF%BC%8C%E4%BD%86%E6%96%87%E4%BB%B6%E5%B7%B2%E6%89%BE%E5%88%B0.png)
我正在尝试运行一个可见的脚本,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,因此访问应该没有问题。确保文件路径中没有任何多余的空格,行尾也没有不可打印的字符。