我想了解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