Обычный ответ на этот тип вопросов заключается в том, что задания cron выполняются в неинтерактивных оболочках, не относящихся к входу в систему, поэтому большинство файлов запуска вашей оболочки (как общесистемные файлы в /etc
и ваши личные точечные файлы в вашем домашнем каталоге) не являются Источник (чтение и выполнение), потому что большинство файлов запуска оболочки применяются к оболочкам входа в систему (первая оболочка, которую вы видите при входе в компьютер) или к интерактивным оболочкам (оболочки, которые подключаются к терминалам, сеансам ssh или эмуляторам терминалов, поскольку пользователь взаимодействует с ними через указанный терминал).
Поэтому, если вы поместите команду в задание cron, которое на самом деле зависит от некоторых настроек среды (включая изменения PATH
), которые обычно происходят в таких местах, как /etc/profile
, /etc/bashrc
, ~/.profile
или ~/.bashrc
, это установка не произойдет для работы cron. Формат файла cron позволяет вам указывать переменные среды для ваших заданий, поэтому вы можете указать BASH_ENV
или ENV
чтобы указывать его на сценарий запуска оболочки для источника. Смотрите раздел "Invocation" на справочной странице bash(1)
.