我有一堆Perl脚本都运行良好,但需要使用Plibdata;在顶部.
我设置了一个运行的cron作业(我从root获取确认电子邮件)并且它回吐了以下错误消息:
Can't locate Plibdata.pm in @INC (@INC contains: /install/lib /opt/perl58/lib/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl58/lib/5.8.8 /opt/perl58/lib/site_perl/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl58/lib/site_perl/5.8.8 /opt/perl58/lib/site_perl .) at ./x line 5. BEGIN Failed--compilation aborted at ./x line 5.
第5行是……你猜对了….使用Plibdata;
我也试图设置环境:
use lib "$ENV{CARSPATH}/install/lib";
所以也许如果我找到了这个plibdata的位置,我可以明确指示它吗?
我的cron命令将使用/usr/bin/sh执行crontabs …
有什么建议?
此脚本从命令行运行.
解决方法
像其他人建议的那样从包装脚本运行程序可能是我的首选方法,但可能还有一些其他解决方案:
如果您使用的是现代cron,则可以在crontab条目中执行以下操作:
* * * * * CARSPATH=/opt/carsi x
用适当的时间表指示符替换星号.
这将为x进程设置CARSPATH,并允许使用传递环境变量的lib语句.
您还可以根据shell和cron实现将环境设置存储在文件中,并执行以下操作:
* * * * * source specialenv.sh && x
specialenv.sh包含的行(用于bash)
export CARSPATH=/opt/carsi
如果您选择这样做,您也可以直接在crontab中设置环境变量.