在 cronjob 中调用时 chpasswd 是未知命令?

chpasswd is unknown command when called in cronjob?

我对以下内容感到好奇:

我有一个 bash 脚本,它通过 cronjob 每月执行一次。当 运行 通过 cronjob 时,以下行给出错误 "unknown command":

echo $P | chpasswd

当我直接执行bash脚本时,它运行正常。

有人有想法吗?

正在将评论转化为答案。

为您的 cron 工作提供的 PATH 是什么? chpasswd 存储在哪里?由于chpasswd所在的目录在cron提供的路径中没有列出,所以找不到。 cron; 你得到的环境非常有限; 运行任何最不寻常的事情都需要非常小心。

通过 cron 作业在脚本 运行 中更完整地设置 PATH,或者指定不在 /bin/usr/bin 中的命令的绝对路径名.

顺便说一句,你是如何设置Pecho回显的?它不是每个月都设置相同的值吗?这样明智吗?

Stack Overflow 上还有许多其他问题,涉及来自 cron 作业的 运行ning 命令的困难。其中,参见 Bash script not running in cron correctly and Perl script works but not via cron and Is there a special restriction on commands executed by cron?,仅举三例。