【问题标题】:make adds an 'exec' line to my scriptsmake 在我的脚本中添加一个 'exec' 行
【发布时间】:2011-07-24 01:38:04
【问题描述】:

我正在尝试构建一个 perl 包(模块 + 脚本)。

我的 Makefile.PL 包含以下内容以包含我的脚本

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

但是在安装脚本后,它会在已安装脚本的开头添加以下内容。

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

为什么要这样做,我可以让它不包括那个吗?

【问题讨论】:

    标签: perl cpan


    【解决方案1】:

    当 ExtUtils::Makemaker 安装您的脚本时,它会修改 shebang 行以使用您用于构建发行版的 perl 的路径。这样,当您调用脚本时,它会使用与您安装依赖项相同的 perl

    此外,它还添加了 exec 行。如果由于某种原因,系统在 shell 中而不是 perl 中启动您的程序,exec 会将其切换为 perl

    别管它。这只会帮助你。

    但是,如果你想覆盖它,你必须覆盖 Makemaker 安装程序的部分。如果你想切断你的手臂,你必须自己弄清楚如何去做。这一切都在 Makemaker 文档中。

    【讨论】:

      【解决方案2】:

      你不应该担心这些线。这是一种让您的脚本可以同时使用 Perl 和 shell 运行的方法,使其具有超级便携性。

      【讨论】:

        【解决方案3】:

        如果您将 shebang 行设置为 #!/usr/bin/env perl,您可以利用 ExtUtils::MM_Unix 中的一个错误,并且安装时不会添加 eval 行。如果安装主机没有工作的 /usr/bin/env ,这将中断

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-18
          • 2013-06-20
          • 2017-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多