如果 Bash 脚本带有错误的解释器路径该怎么办?

如果 Bash 脚本带有错误的解释器路径该怎么办?

我正在尝试在我们的服务器上安装 BugZilla。问题是 BugZilla 的 perl 脚本将路径定义为/usr/bin/perl,而我的 perl 安装位于/usr/local/bin/perl

我在安装其他应用程序时也遇到了这个问题,我不得不手动编辑解释器路径。

您如何处理这种情况?

编辑:我刚刚注意到我们在服务器上有两个 perl 副本,一个在标准位置,一个在 /usr/local/bin/perl,但which perl返回前一个路径。

顺便说一句,这是我运行 bugzilla 的 perl 脚本时收到的错误

bash: ./checksetup.pl: /usr/bin/perl: bad interpreter: Permission denied

答案1

您可以创建一个软链接使用将 /usr/bin/perl 链接到 /usr/local/bin/perl

ln -s /usr/local/bin/perl /usr/bin/perl

答案2

我们在我的环境中这样做:我们将系统 perl 留在 /usr/bin/perl 中,并在 /usr/local/bin/perl 中安装我们自己的解释器;这使我们能够保留可靠的 perl,我们知道操作系统更新不会消失。

我认为解决这个问题的最简单方法是完全避开 shebang 行,只需使用你真正想要执行它们的 perl 解释器来调用这些脚本:

/usr/local/bin/perl /path/to/someBugzillaScript.pl

这使您可以控制执行环境,而无需进行系统级更改来适应 Bugzilla 包。

相关内容