Переменные среды Cron

Переменные среды Cron

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

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

решение1

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

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

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

Проверьте crontab(5)подробности;man 5 crontab

решение2

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

Оболочка и переменные для 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"

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

Связанный контент