如果 bash 脚本带有不正确的解释器路径怎么办?

gAM*_*OKa 2 scripting installation bash perl

我正在尝试在我们的服务器上安装 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
Run Code Online (Sandbox Code Playgroud)

use*_*517 8

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

ln -s /usr/local/bin/perl /usr/bin/perl
Run Code Online (Sandbox Code Playgroud)

  • 检查 `/usr/bin/perl` 上的权限是 755。如果不是,则使用 `chmod 755 /usr/bin/perl` 设置它们。要找出正在使用的 perl 安装,请检查脚本顶部的 shebang 行。 (2认同)
  • @gAMBOOKa:如果您在那里安装了 Perl,`which perl` 返回 /usr/local/bin/perl 的事实很正常。/usr/local/bin 通常会覆盖 PATH 中的 /usr/bin。但是,启动脚本最重要的是脚本中的 shebang。请注意,如果shebang 是`#!/usr/bin/env perl`,它将指向/usr/local/bin/perl,因为它会使用您的PATH。现在您可以像@lain 建议的那样检查 perms,以检查为什么 /usr/bin/perl 不会执行。 (2认同)