/ usr / local / bin / perl5:错误的解释器:权限被拒绝

时间:2014-07-24 11:55:23

标签: perl unix tcl

我有一个unix命令 (脚本),其中包含嵌套的perl脚本。 当我从命令行运行此unix命令时,它工作正常。 如果我使用exec从tcl文件运行相同的命令,我会收到以下错误:

'sh: /cmdpath/cmd.pl: /usr/local/bin/perl5: bad interpreter: Permission denied'

任何想法可能导致这种情况。我的tcl代码试图多次执行此命令(超过100次)。

由于 Ruchi

2 个答案:

答案 0 :(得分:2)

几乎可以肯定,您的Perl脚本是以DOS / Windows行结束格式编码的,它使用\r\n来终止行。由于Unix仅使用\n终止行,因此\r被解释为属于可执行文件名,因此内核尝试运行名为perl5\r的程序并失败。

删除此行上的尾随\r应该可以解决问题。

或者,可能是perl5可执行文件在给定路径中不存在,或者存在但缺少执行权限位。如果您将此可执行文件存放在文件系统中的其他位置,请更新脚本第一行上的路径以指向它。要解决后一个问题,请运行

chmod +x /usr/local/bin/perl5

你需要成为root用户才能做到这一点。

答案 1 :(得分:0)

根据您显示的输出,您可能正在执行" sh cmd.pl"。反过来,sh正试图执行perl解释器。 为什么不生成" / usr / local / bin / perl5 cmd.pl"直接地,这将更有效率,特别是如果你这样做了数百次。