Не может получить доступ к переменной оболочки в crontab конфигурации

У меня есть проблема в доступе к переменной оболочки в то время как рабочее задание крона. На самом деле я создал задание, которое печатает два значений переменных оболочки в a env.output файл.

Я пишу команду использования задания крона $ crontab -e (без sudo пользователя).

Мой crontab конфигурационный файл похож на этот:-

# varibales
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
     /usr/games:/usr/local/games
MAILTO=abc@xyz.com
HOME=/home/ubuntu
JOBS_PATH=${HOME}/cronjobs

# Jobs
* * * * * echo "$HOME and $JOBS_PATH" >> ${HOME}/env.output 2>&1

Так, теперь когда я вижу содержание файла env.output , я получаю этот вывод

/home/ubuntu and ${HOME}/cronjobs

который не ожидается, я принял.

Я хочу свой вывод, должен быть похожим на этот:-

/home/ubuntu and /home/ubuntu/cronjobs

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

2
задан 18 November 2015 в 11:16

2 ответа

у меня есть проблема в доступе к переменной оболочки

HOME, как определено наверху crontab, не переменная оболочки, переменная среды.

Вы не можете сослаться на переменные среды наверху crontab, поскольку никакая оболочка не обрабатывает их, и таким образом они не расширены (и интерпретированы буквально).

необходимо будет установить JOBS_PATH вручную:

# ...
JOBS_PATH=/home/ubuntu/cronjobs
# ...
2
ответ дан 2 December 2019 в 01:44

Это - ограничение демона крона. Посмотрите это от страница справочника crontab:

строка значения не проанализирована для экологических замен или замены переменных, таким образом строки как:

     PATH = $HOME/bin:$PATH

не будет работать, как Вы могли бы ожидать.

можно сделать обходное решение, так как удар рассматривает тильду (~) как замена $HOME. Поэтому используйте:

JOBS_PATH=~/cronjobs
4
ответ дан 2 December 2019 в 01:44

Другие вопросы по тегам:

Похожие вопросы: