Linux awk shebang不';行不通

Linux awk shebang不';行不通,linux,bash,shell,unix,awk,Linux,Bash,Shell,Unix,Awk,我有一个简单的awk程序: #!/usr/bin/awk -f BEGIN {print "work already!"} 如果我以以下方式运行它: awk -f panic 在(osx)终端上,它工作。但如果我尝试将其作为脚本运行,则会失败: . panic -bash: BEGIN: command not found 我使用哪个awk检查了awk的位置,它确实位于/usr/bin/awk。知道它为什么不工作吗?以/panic的形式运行它,而不是。panic,因为后者与运行源panic

我有一个简单的
awk
程序:

#!/usr/bin/awk -f
BEGIN {print "work already!"}
如果我以以下方式运行它:

awk -f panic
在(osx)终端上,它工作。但如果我尝试将其作为脚本运行,则会失败:

. panic
-bash: BEGIN: command not found

我使用
哪个awk
检查了awk的位置,它确实位于
/usr/bin/awk
。知道它为什么不工作吗?

/panic
的形式运行它,而不是
。panic
,因为后者与运行
源panic
相同,后者不会执行您想要的操作。请参见
man source

要将文件作为脚本运行,您必须键入:

./<script>
/
编辑

正如William Pursell所指出的,
不是
源代码的别名,但恰恰相反

。不是源的别名。是在当前shell中运行另一个脚本的sh标准命令。source是一个源于csh的命令,被许多sh克隆用作..的别名。。如果源代码不被视为可憎的东西,那么它就是…的别名,而不是相反


不是
源代码的别名
是在当前shell中运行另一个脚本的
sh
标准命令
source
是一个源于
csh
的命令,被许多
sh
克隆用作
的别名。如果
source
不被视为讨厌的东西,那么它是
的别名,而不是相反。我的答案是首先…@williampersell出于兴趣,source命令有什么问题?有没有更好的方法达到同样的效果?还是你只是说这是不必要的重复?source命令本身并没有什么问题,只是它是
的别名,我觉得说
源代码的别名是不正确的。但是,严格地说,根据开放组标准()“如果命令名与下表中列出的实用程序名匹配,则结果是未指定的。”并且
source
是列出的命令之一。也就是说,它是非标准的,在技术上使用它会导致未指定的行为。但实际上,它几乎适用于您可能使用的所有shell?