我有两个文件,第一个是'ax':
#!/usr/bin/env zsh print "Params: $*" cat $*
另一个'tst':
#! /home/me/ax A B C
> ./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 。