私はperl
がシバンラインをどう扱うのか理解しようとしています。Perlはシバン線をどのように扱いますか?
I を使用すると、コマンドラインの「コマンド位置」に記載されているインタープリタが、シバン行に記載されているインタープリタよりも優先されると考えることができます。例えば、demo
と呼ばれる実行可能なスクリプトがこの
#!/usr/local/bin/perl-5.00503
printf "$]\n";
のように見える場合は...その後、私は次のことを守っなります
$ ./demo
5.00503
% /usr/local/bin/perl-5.22 ./demo
5.022003
IOW、最初の実行では、シェバングでインタプリタがあります1つは実行中で、2つ目はコマンドラインで言及されたものです。ここまでは順調ですね。
しかし、私は/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
通訳このよう/bin/bash
、などの非perl
通訳は、シェバングを「却下」ん:
% /bin/bash ./demo-wc
$]
一番下の行はperl
が言及したインタプリタによってはシェバングを処理するための根本的に異なるポリシーを持っているようだということです。
- どう
perl
は従うためにどの政策決定のでしょうか? - どちらの場合でもポリシーは正確には何ですか?
すでに回答済み:https://stackoverflow.com/a/29563961/152948 – hobbs
@hobbs質問の一部には答えがありません。 – zdim