我的印象是,如果我加上这一行
#!/bin/bash
在我的文件开头,它将被识别为一个 bash 脚本,我只需通过
file.sh
代替
sh file.sh
但在我的例子中,给出了类似于的file.sh
东西。这是为什么呢?test.sh
test.sh: command not found
更新
我注意到我需要使用./
。但我认为它无论如何都会在当前目录中查找?
./test.sh
答案1
首先需要确保该文件是可执行的:
chmod +x file.sh
然后要运行它,您要么需要将它放在您的 PATH 中,即操作系统在寻找要运行的文件时搜索的文件目录之一,您可以使用 找到它echo $PATH
,要么您需要输入:
./file.sh
而不仅仅是输入file.sh
。
如果它在您的 PATH 中,您可以直接输入file.sh
,我推荐这样做。 一个好地方是~/bin
。 如果不存在该文件夹,请创建该文件夹,在 Ubuntu 下,它将在您登录时添加到您的路径中。
答案2
您需要使用 ./file.sh 启动它,因为当前目录不在 PATH 中。
如果这还不够,因为你错过了 frabjous 的建议,你应该以chmod a+x
shebang 开头来启动程序#!/bin/bash
bash file.sh
不是
sh file.sh
即使 sh 是 /bin/bash 的符号链接。
shell 检查它是如何被调用的,并且可以被调用以sh
在兼容模式下运行,因此它可能无法处理某些 bashism,如果被调用则可能会起作用bash file.sh
。
这不是你的问题,但如果你不知道这些细微的区别,那可能会成为你的问题。