У меня есть несколько скриптов Perl, где строка shebang устарела. То есть, shebang указывает на более старую версию Perl.Больше приоритета - строка Shebang или команда perl?
Старый на пути:
#!/data/oracle10.0/perl/bin/perl
Новая версия Perl в
#!/data/**oracle11.0**/perl/bin/perl
Я softlinked команды PERL к месту новой версии Perl.
perl -> /data/oracle11.0/perl/bin/perl
Теперь shebang указывает на устаревшую версию и командные пункты perl на более новую версию.
Итак, когда я делаю perl sample.pl
, shebang игнорируется.
Я написал несколько примеров скриптов, чтобы это увидеть. Кажется, строка shebang игнорируется, когда я использовал команду perl
. Но я помню, что это было не так с более старой версией perl (Shebang считался над командой perl
).
Итак, мой вопрос: изменилась ли новая версия perl (5.10) и более ранней версии (5.8) по отношению к линии shebang? Новая версия Perl игнорирует строку shebang, если команда perl передается ему?
Запустите 'which perl' из строки cmd, чтобы проверить, что вы на самом деле используете. 'chmod 755 script.pl; ./script.pl', чтобы заставить perl от shebang. –
Perl всегда сканировал строку shebang для дополнительных аргументов командной строки, но это не 'exec' другой Perl. Предполагаемый потребитель линии shebang - ваша оболочка. – tjd