bash:当文件明确存在时,没有这样的文件或目录

问题描述 投票:0回答:3

我有一个位于“/home/pi/scripts/take-snapshot.sh”的 shell 脚本,但是当我尝试执行它时,我收到一个错误,表明该文件不存在。

以下命令不起作用(假设在脚本目录中):

/home/pi/scripts/take-snapshot.sh
./take-snapshot.sh
take-snapshot.sh
bash /home/pi/scripts/take-snapshot.sh

以下 do 有效并将调出 shell 文件(不是新文件):

vi take-snapshot.sh
nano take-snapshot.sh
linux bash raspberry-pi
3个回答
4
投票

最可能的原因是您的文件不可执行。 Bash 有点令人困惑,因为它会将文件报告为“未找到”,即使您没有执行该文件的权限。运行

ls -l
并检查权限。最左边的列至少应为当前用户显示一个“x”。对于您自己创建的文件,它通常看起来像
-rwxr-xr-x

如果权限不匹配,请运行

chmod +x take-snapshot.sh
来修复权限。


2
投票

当行结尾是 Windows EOL 字符时,我看到了此错误。它没有给出任何其他错误,只是上面的“没有文件或目录”。

检查EOL字符并将其转换为linux EOL,如果是windows则尝试再次运行脚本。


0
投票

我最近遇到了这个错误,因为我的二进制文件是在一个与我尝试运行它的系统(ubuntu vs nixos)截然不同的系统上动态构建的。我现在知道,当可执行文件需要“解释器”(或者,在我的例子中,链接器)位于特定位置(不同于其在运行系统上的位置)时,可能会触发此错误。在与目标匹配的系统上构建二进制文件解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.