即使文件明显存在,也出现“没有这样的文件或目录”

Cli*_*ote 1 bash

我有一个很困惑的问题。如果我尝试通过以下方式运行脚本:

root@myServer:~/dig# ./minerd.sh
Run Code Online (Sandbox Code Playgroud)

我得到:

-bash: ./minerd.sh: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

root@myServer:~/dig# ~/dig/minerd.sh
Run Code Online (Sandbox Code Playgroud)

我仍然得到:

-bash: /root/dig/minerd.sh: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我做:

root@myServer:~/dig# ls ~/dig/minerd.sh
Run Code Online (Sandbox Code Playgroud)

然后我得到:

/root/dig/minerd.sh
Run Code Online (Sandbox Code Playgroud)

所以,该文件显然就在那里。我之前也做过chmod +x这方面的工作。但由于某种原因,它仍然不允许我运行它。我究竟做错了什么?

编辑:即使将文件移动到不同的名称也不起作用:

root@myServer:~/dig# mv minerd.sh test.sh
root@myServer:~/dig# ./test.sh
-bash: ./test.sh: No such file or directory
Run Code Online (Sandbox Code Playgroud)

小智 5

检查 '#!' line,文件的第一行。如果 shell 路径中有拼写错误,您将收到该消息。

如果'#!' 行看起来不错,尝试这样做xxd minderd.sh- 仔细查看输出中的非打印字节值。您可能会遇到“看不见的打字错误”。

编辑 既然你提到它是一个二进制文件,我认为这意味着一个已编译的可执行文件,请执行以下操作:

ldd minderd.sh
Run Code Online (Sandbox Code Playgroud)

这将向您展示诸如文件需要哪些动态库以及动态链接器将从何处获取它们之类的信息。我敢打赌,无论可执行文件想要什么动态链接器(基于/lib/ld-linux.so.2您上面的评论),您的系统上都不存在。