声明我自己的脚本来执行文件

我有两个文件,第一个是'ax':

#!/usr/bin/env zsh print "Params: $*" cat $* 

另一个'tst':

 #! /home/me/ax A B C 

当我在sh / csh / bash shell中时:

 > ./tst ./tst: line 2: A: command not found ./tst: line 3: B: command not found ./tst: line 4: C: command not found 

当我在zsh shell中:

 Params: ./tst #! /IW/users-home/e640846/ax A B C 

有没有一种标准的方法来获得我在其他shell中的zsh shell中的行为?

精度: – bash版本:3.00.15-(1)发布(x86_64-redhat-linux-gnu)

谢谢

一个解释的脚本不能让解释器转而成为另一个脚本,所以内核的exec *()会失败,并使用ENOEXEC。

此时,POSIX要求shell解释脚本本身。 SUSv3,“命令search和执行”,1.dib第二段。

但zsh不是POSIX shell。 相反,zsh看着#! 并尝试运行它自己,将原始脚本作为parameter passing给它。 在这里发生了什么事情 – 你没有成功地使用ax作为tst的解释器,处理tst的内容; 你只是把tst作为parameter passing给ax