Когда ваш скрипт выполняется в cron, переменные среды и путь могут быть установлены иначе, чем когда скрипт запускается непосредственно пользователем. Может быть, поэтому он ведет себя по-другому?
Чтобы проверить это: создайте новый скрипт, который ничего не делает, кроме printenv
и echo $PATH
.
Запустите этот скрипт вручную, сохранив вывод, а затем запустите его как задание cron, сохранив этот вывод.
Сравните две среды. Я уверен, что вы найдете различия ... интерактивный
В оболочке входа будет настроена среда путем выбора источников ".login", ".bash_profile",
или аналогичный скрипт (в зависимости от оболочки пользователя). Это обычно не произойдет в
задание cron, которое обычно является причиной того, что задание cron ведет себя не так, как запущено
тот же сценарий в оболочке входа в систему.
Чтобы это исправить: в верхней части скрипта либо явно установите переменные окружения
и PATH, чтобы соответствовать интерактивной среде, или источник ".bash_profile" пользователя,
".login" или другой скрипт установки, в зависимости от того, какую оболочку они используют.