我有一个unix命令 (脚本),其中包含嵌套的perl脚本。 当我从命令行运行此unix命令时,它工作正常。 如果我使用exec从tcl文件运行相同的命令,我会收到以下错误:
'sh: /cmdpath/cmd.pl: /usr/local/bin/perl5: bad interpreter: Permission denied'
任何想法可能导致这种情况。我的tcl代码试图多次执行此命令(超过100次)。
由于 Ruchi
答案 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"直接地,这将更有效率,特别是如果你这样做了数百次。