应该使用 /usr/bin/perl 或 /usr/local/bin/perl 中的哪一个?

应该使用 /usr/bin/perl 或 /usr/local/bin/perl 中的哪一个?

如果我在一个系统上同时拥有/usr/bin/perl/usr/local/bin/perl,我应该使用哪一个?

答案1

这取决于:在某些系统上,例如BSD打包,/usr/local/bin可能是包安装可执行文件的目录。在这种情况下,它会更新(也许更好),但/usr/bin/perl会更稳定。

您可以使用perl -V查看哪个版本号较新。有时(在多用户系统上)的内容/usr/local/bin并不是真正更新的。

通常的妥协是让用户决定,通过env在 shebang/hashbang 行中使用(但同样,小路可能env因系统而异)。 shebang 行指的是脚本的第一行,可能类似于以下之一:

#!/usr/bin/perl
#!/usr/bin/perl -w
#!/usr/bin/env perl

前两个指定运行 Perl 的目录。作为奖励,此表单允许传递选项,例如-w(用于打开警告)。最后一行使用程序通过搜索用户环境变量中列出的目录来env选择第一次出现的。perlPATH

也可以运行这样的脚本:

perl myscript

它(如)告诉 shell从 中列出的目录中env选择第一个出现的。perlPATH

明确的

./perl myscript

当然会覆盖PATH.但是带有 shebang 行的脚本是大多数人使用 Perl 脚本的方式(Perl 单行是另一回事)。

进一步阅读:

答案2

它是给谁用的?如果只有你一个人,只要你的两个版本的 perl 都足够新就没有关系。是为了工作环境吗?如果是这样,请检查您的部署策略,因为他们可能有答案。如果是为了向公众分发,我建议根据软件包类型进行变化,特别是对 debs(根据 debian 指南)和 rpms 使用 /usr/bin/perl(因为 Red Hat 明确不允许 rpms 安装到 /usr/ local),但 /usr/bin/env perl 用于 tar 和 shar 软件包,因为它最有可能在随机的 UNIX 计算机上工作。

相关内容