bin/bash:错误的解释器:没有此文件或目录

bin/bash:错误的解释器:没有此文件或目录

我刚刚从 Windows 转到 Linux(Ubuntu 18.04)...并且教程学习 bash 脚本...

我写了一个简单的 shell 脚本

#!bin/bash 

echo "Hello World" 

但当我尝试使用

$ ./test1.sh

它会抛出一个错误

bash: ./test1.sh: bin/bash: bad interpreter: No such file or directory

当我使用运行时

$ bash test1.sh

它运行良好

我尝试搜索它并找到了很多答案,但由于 Windows 换行符和 ubuntu 换行符之间的一些差异,所有答案都涵盖了错误...我尝试在二进制模式下在 VIM 中打开它(不知道它是什么)但在 bin/bash 之后^M没有任何标签。^M

请指出我做错的地方。

答案1

你缺少一个前导斜杠,使得shebang成为绝对路径:

#!/bin/bash
# ↑ here

就您而言,shell 似乎正在搜索./bin/bash

仅当您将脚本作为程序运行时,才会考虑shebang(以及可执行权限):

$ ./test1.sh

如果直接运行解释器并将脚本作为参数提供,它将被忽略:

$ bash test1.sh

也可以看看:https://askubuntu.com/a/850387/250300

答案2

虽然这是一个老问题,但由于没有解释^M问题,也许它有用:

  • ^M来自于“Windows”返回值与Linux返回值的区别。
  • 最简单的解决方案是使用编辑器将脚本中的所有返回从 CRLF(Win)转换为 LF(Linux),例如 VS Code。

答案3

抱歉重提旧话题,但我遇到了同样的问题并设法解决了它,不确定到底是什么起了作用,但做了下面列出的所有事情。首先通过以下命令安装 Gedit:

sudo apt-get install gedit

然后确保以 Unix/Linux 行尾保存了脚本。之后,在正确的文件夹中,在终端中输入:

chmod +x filename

最后一件事是在脚本本身中进行替换

#!bin/bash 

#!/bin/bash 

相关内容