命令与shebang的距离?

whi*_*ngs 4 shell-script shebang

shebang (#!/bin/sh) 放在 bash 脚本的第一行,通常在第二行后面跟着一个注释,描述脚本执行的操作。如果没有特别的原因,您决定将第一个命令放在 shebang 和注释的下方,例如 10000 行。这会减慢脚本的执行速度吗?

Joh*_*024 5

为了找出答案,我创建了两个 shell 文件。每个都以 shebang 行开始,以唯一的 command 结束datelong.sh有 10,000 条评论行,而short.sh没有。结果如下:

$ time short.sh 
Wed Nov 12 18:06:02 PST 2014

real    0m0.007s
user    0m0.000s
sys     0m0.004s

$ time long.sh
Wed Nov 12 18:06:05 PST 2014

real    0m0.013s
user    0m0.004s
sys     0m0.004s
Run Code Online (Sandbox Code Playgroud)

差异不为零,但不足以让您注意到。

让我们变得更极端。我创建very_long.sh100 万条评论:

$ time very_long.sh
Wed Nov 12 18:14:45 PST 2014

real    0m1.019s
user    0m0.928s
sys     0m0.088s
Run Code Online (Sandbox Code Playgroud)

这有明显的延迟。

结论

10,000 条注释行影响很小。一百万条评论行会导致严重延迟。

如何创建long.shvery_long.sh

要创建脚本long.sh,我使用了以下awk命令:

echo "date" | awk 'BEGIN{print "#!/bin/bash"} {for (i=1;i<=10000;i++) print "#",i} 1' >long.sh
Run Code Online (Sandbox Code Playgroud)

要创建very_long.sh,我只需要稍微修改上面的代码:

echo "date" | awk 'BEGIN{print "#!/bin/bash"} {for (i=1;i<=1000000;i++) print "#",i} 1' >very_long.sh
Run Code Online (Sandbox Code Playgroud)