make добавляет строку 'exec' в мои скрипты - PullRequest
1 голос
/ 23 июля 2011

Я пытаюсь собрать пакет perl (модуль + сценарии).

В моем файле Makefile.PL есть следующее, чтобы включить мой сценарий

EXE_FILES => [
               'bin/somescript1',
             ],

Но после установки сценарияв начало установленного скрипта добавляется следующее:

eval 'exec /usr/bin/perl  -S $0 ${1+"$@"}'
    if 0; # not running under some shell

Почему это происходит, и я могу сделать так, чтобы это не включалось?

Ответы [ 3 ]

1 голос
/ 23 июля 2011

Когда ExtUtils :: Makemaker устанавливает ваши сценарии, он изменяется на строку shebang, чтобы использовать путь к perl, который вы использовали для построения дистрибутива.Таким образом, когда вы вызываете скрипт, он использует тот же perl, который вы использовали для установки зависимостей.

Кроме того, он добавляет эту строку exec.Если по какой-либо причине система запускает вашу программу в оболочке вместо perl, exec переключает ее на perl.

Оставьте ее в покое.Это только помогает тебе.

Однако, если вы хотите переопределить его, вы должны переопределить части Makemaker, которые устанавливают программы.Если вы хотите отрезать руку, вам придется выяснить, как это сделать самостоятельно.Это все в документации Makemaker.

1 голос
/ 23 июля 2011

Вам не стоит беспокоиться об этих строках.Это способ сделать ваш скрипт работоспособным как с Perl, так и с оболочкой, сделав его супер-переносимым.

0 голосов
/ 23 июля 2011

Если вы установите строку shebang в #! / Usr / bin / env perl, вы можете использовать ошибку в ExtUtils :: MM_Unix, и строка eval не добавляется при установке.Это сломается, если на установочном хосте нет работающего / usr / bin / env

...