2

Я запускаю простой сценарий оболочки, который прекрасно работает в оболочке входа из cron , где он не запускается. По какой-то причине /usr/local/bin не находится на пути пользователя при запуске из cron а при запуске в оболочке.

Где определяется среда для cron ?

2 ответа2

1

Как правило, из среды без регистрации, установленной для /bin/sh , которая используется по умолчанию для запуска команды.

Вы можете установить дополнительные переменные окружения в вашем crontab в большинстве версий, например:

PATH=/usr/local/bin:/usr/bin:/bin
@reboot whatever

Проверьте crontab(5) для деталей; man 5 crontab

0

Проверьте, какую оболочку использует ваш скрипт.

Оболочка и переменные для crontab указаны в /etc /crontab

x@x:~$ cat /etc/crontab 

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Файл профиля, используемый sh, находится у пользователя.

x@x:~$ ls ~/.profile 
/home/x/.profile

Вы можете добавить переменную PATH в конец этого файла (убедитесь, что вы добавляете в файл профиля правильного пользователя)

PATH="$PATH:/usr/local/bin"

или вы можете добавить ту же строку в свой собственный скрипт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .