我尝试了以下内容并发现它可以正常工作.这是由非特权用户完成的.首先找出perl命令的位置:
# which perl
然后检查PERL5LIB的值:
# echo $PERL5LIB
MAILTO=<my email address for the jobs output> HOME=/home/myhome PERL5LIB=/home/myhome/perl5/lib/perl5 0 2 * * * $HOME/<rest of path to perl>/perl $HOME/<path to my perl script> arg1 ...
这将在凌晨2点运行,似乎正确找到所有Perl库.我的问题是:这是完整和便携的吗?有没有更好的办法?
我已经看到了许多bash和perl脚本,它们应该为执行Perl脚本准备环境,但这似乎就足够了.欢迎任何建议!
编辑:从评论到问题,似乎我使用Perlbrew和local :: lib的“坏”混合.确保库安装在特定Perlbrew版本中的方法在这里得到解答:How do I install CPAN modules while using perlbrew?.当您使用local :: lib时,cpan和cpanm都将安装在PERL5LIB下,除非您明确告诉他们不这样做. cpanm似乎也更适合与Perlbrew一起工作.
解决方法
脚本的shebang(#!)行应指向它要运行的(perlbrew-installed)perl. (这应该是安装脚本的一部分.)这就是你所需要的.
0 2 * * * /path/to/script arg1 ...