Назад | Перейти на главную страницу

OS X cron и переменные среды

В настоящее время я устанавливаю ряд переменных среды в OS X в / etc / profile с помощью команды экспорта. Все они отображаются правильно, когда я проверяю терминал, однако, когда скрипт выполняется через cron, ни одна из этих переменных не устанавливается.

Насколько я понимаю, cron работает со своими собственными переменными среды, но как я могу добавить свои собственные переменные в среду cron?

Пожалуйста, объясните как можно проще, как вы, наверное, догадались, я мало что знаю об этом.

Спасибо Джек

В cron Утилита работает в очень ограниченной среде. Это означает, что вы должны изложить вещи так, как если бы вы работали в интерактивном режиме в командной строке (например, /usr/bin/perl а не просто perl).

Также стоит сказать, что Apple рекомендует launchd над cron. (Я действительно использую cron я на Mac, но только потому, что привык к этому с машин Linux. Я все еще хочу переключиться.)

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

FOO=bar

0 * * * * echo $FOO

Вышеупомянутое должно повторяться "полосой" каждый час.

Я не проверял подробно, но на странице руководства bash объясняется (поиск по INVOCATION), что bash не читает / etc / profile, когда он не вызывается как логин или интерактивная оболочка.

Программа входа в систему всегда запускает оболочку как оболочку входа в систему, поэтому я предполагаю, что cron этого не делает, и оболочка не читает какие-либо файлы профиля (согласно странице руководства он будет читать файл, указанный в переменной ENV, когда оболочка была запущена, но cron похоже, нет возможности установить это).

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