Shell 脚本文件 (.sh) 无法运行,并抛出错误

Shell 脚本文件 (.sh) 无法运行,并抛出错误

我是 Linux 新手,我.sh的桌面上有一个想要运行的 shell 脚本 () 文件。

test.sh这是我的目录中的文件内容Desktop

#!bin/bash
#test.sh
echo "test"

我想test.sh通过终端运行(执行)。这些是我使用的命令:

cd Desktop

我允许运行test.sh

chmod +x test.sh

然后尝试打开文件:

test.sh

但是我收到此错误:

test.sh: command not found

当我输入时test.sh./再次收到此错误:

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

我究竟做错了什么?

答案1

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

代替:

#!bin/bash

和:

#!/bin/bash

bin/bash是相对于当前目录的路径。 /bin/bash是无论当前目录是什么都可以使用的绝对路径。

另外,看看你的 PATH:

echo $PATH

如果您将其放在test.sh列出的任何目录中,您将能够执行它而无需./或其他路径说明符。许多人创建一个$HOME/bin目录,将所有脚本放在那里,并将其添加到他们的 PATH 中。

答案2

为了能够运行你的 bash 脚本,将第一行更改为

#!/bin/bash

这是将解释并运行您的脚本的二进制文件。

要运行 bash 脚本,请执行以下操作

./scriptname.sh

在您的示例中:

./test.sh

在您拥有脚本的目录中。

答案3

我在 Windows 机器上编辑了 .sh 文件,发现了类似的问题。运行dos2unix脚本后,问题得到解决。

答案4

我有同样的问题

zsh: not a directory: ./tst.sh

在此处输入图片描述

我的解决方案✅

git diff

- #!/usr/bin/env/ bash
+ #!/usr/bin/env bash

在此处输入图片描述 在此处输入图片描述

结论

# ✅
#!/usr/bin/env bash


# ❌ without `/` beginning of the path
#!usr/bin/env bash


# ❌ with `/` end of the path
#!/usr/bin/env/ bash

相关内容