我想了解perl
如何处理shebang线。Perl如何处理shebang行?
我用认为,在命令行中的“命令位置”中提到的任何解释将采取优先于家当行中提到之一。例如,如果一个可执行脚本调用demo
看起来像这样
#!/usr/local/bin/perl-5.00503
printf "$]\n";
...然后我会注意以下事项:
$ ./demo
5.00503
% /usr/local/bin/perl-5.22 ./demo
5.022003
督察,在第一次执行,在家当解释是一个在运行,而在第二个是在命令行中提到的那个。到现在为止还挺好。
但现在,如果我改变对认领的“翻译”成类似/usr/bin/wc
,那么它总是胜过任何perl
解释我提到在命令行上:
% cat demo-wc
#!/usr/bin/wc
printf "$]\n";
% ./demo-wc # produces the expected behavior
4 3 31 ./demo-wc
% /usr/local/bin/perl-5.22 ./demo-wc
4 3 31 ./demo-wc
% /usr/local/bin/perl-5.14 ./demo-wc
4 3 31 ./demo-wc
AFAICT,这种特殊的行为似乎是有限的口译人员perl
;非perl
解释,如/bin/bash
,做“否决”的家当:
% /bin/bash ./demo-wc
$]
的底线是perl
似乎有处理取决于提到解释的家当完全不同的策略。
- 如何
perl
确定遵循哪些策略? - 这两种情况下的政策究竟是什么?
已经在这里回答:https://stackoverflow.com/a/29563961/152948 – hobbs
@hobbs不完全,这回答了问题的一部分。 – zdim