我有以下脚本:
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
,但从安全角度来看,这被认为有点可疑。