Perl 模块中的可执行脚本如何获得正确的 shebang 行?

发布于 2024-10-17 22:56:57 字数 397 浏览 7 评论 0原文

通常,当 Perl 模块安装可执行脚本时,它会以某种方式更改 #!/usr/bin/perl 行以指向适当的 Perl 路径。例如,如果我使用安装在 /usr/local/bin/perl 的 perl 来安装模块,那么 shebang 行将更改为 #!/usr/local/bin/ perl,这样安装的脚本将始终使用安装它的 perl 版本。

这是什么?我如何在我自己的安装脚本的模块中做到这一点?

编辑

请注意,我专门谈论作为 Perl 模块的一部分分发的可执行 Perl 脚本。由于模块安装到特定版本的 Perl,因此该模块安装的任何脚本都必须使用相同版本,因此 #!/usr/bin/env perl 是错误的。

Generally, when a Perl module installs an executable script, it somehow changes the #!/usr/bin/perl line to point to the appropriate Perl path. For example, if I used the perl installed at /usr/local/bin/perl to install the module, then the shebang line will be changed to #!/usr/local/bin/perl, so that the installed script will always use the version of perl that installed it.

What does this, and how can I do it in my own modules that install scripts?

Edit

Note that I am specifically talking about executable perl scripts that are distributed as part of a Perl module. Since a module is installed to a specific version of Perl, any scripts installed by that module must use that same version, so #!/usr/bin/env perl is wrong.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风吹雨成花 2024-10-24 22:56:57

来自 http://metacpan.org/pod/ExtUtils::MakeMaker

EXE_FILES

引用数组可执行文件。这些文件将被复制到 INST_SCRIPT 目录。 Make realclean 会再次从那里删除它们。

如果您的可执行文件以 #!perl 或 #!/usr/bin/perl 等开头,MakeMaker 会将其更改为调用 perl 'Makefile.PL' 的路径,因此即使 perl 是这样,程序也将确保正确运行不在 /usr/bin/perl 中。

From http://metacpan.org/pod/ExtUtils::MakeMaker

EXE_FILES

Ref to array of executable files. The files will be copied to the INST_SCRIPT directory. Make realclean will delete them from there again.

If your executables start with something like #!perl or #!/usr/bin/perl MakeMaker will change this to the path of the perl 'Makefile.PL' was invoked with so the programs will be sure to run properly even if perl is not in /usr/bin/perl.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文