如何将 hashbang 更改为自动检测脚本类型

如何将 hashbang 更改为自动检测脚本类型

我有以下脚本:

 1 #!/usr/bin/env sh
 2 #calculate number of tests we will run
 3 lines="$(cat /etc/crontabs/root|wc -l)"
 4 tests="$(($lines - 2))"
 5
 6 echo "1..$tests"
 7 counter=1
 8 etc.... does other stuff

在第 1 行,我尝试以这样的方式对其进行编码,这样我就不必输入“sh”来启动它。以前,hashbang 看起来像这样:

#!/bin/sh

代码可以工作,但你必须告诉它使用哪个 exe 来启动它。

我现在想尝试更改它,以便用户不必知道它是什么类型的脚本。我认为我做错了什么,因为当我尝试运行脚本时,出现以下错误:

lab-1:/tmp# crontab_test       
-ash: crontab_test: not found

你能告诉我我迷路到哪里了吗?

答案1

你的 hashbang 路径看起来不错。

你的脚本在/tmp目录中吗?

/tmp目录(通常)不在您的目录中$PATH,因此您必须在命令行上指定该目录。您可以使用./当前目录:

./crontab_test

有些系统的当前目录.位于 中$PATH,但从安全角度来看,这被认为有点可疑。

相关内容