Bashrc, сценарий оболочки и crontab

Я пытаюсь использовать функции, определенные в /home/my_username/.bashrc, в сценарии оболочки, который запускается crontab.

#crontab -l # m h dom mon dow command * * * * * /bin/sh /home/my_username/CronTab_shell_script.sh >> /home/my_username/Desktop/file.log

Скажем, у меня есть функция mount (), сохраненная в

/home/my_username/.bashrc function mounted(){ if mount|grep $1; then echo "mounted" else echo "not mounted" fi }

Как я могу вызвать и использовать функцию mount () из

/home/my_username/CronTab_shell_script.sh
0
задан 13 September 2017 в 14:43

2 ответа

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

Вы можете поместить source /home/my_username/.bashrc в начало /home/my_username/CronTab_shell_script.sh, чтобы сделать эту функцию доступной.

Вы также можете указать свой .bashrc в своем crontab:

#crontab -l # m h dom mon dow command * * * * * . /home/my_username/.bashrc; /bin/sh /home/my_username/CronTab_shell_script.sh >> home/my_username/Desktop/file.log
2
ответ дан 18 July 2018 в 06:56

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

Вы можете поместить source /home/my_username/.bashrc в начало /home/my_username/CronTab_shell_script.sh, чтобы сделать эту функцию доступной.

Вы также можете указать свой .bashrc в своем crontab:

#crontab -l # m h dom mon dow command * * * * * . /home/my_username/.bashrc; /bin/sh /home/my_username/CronTab_shell_script.sh >> home/my_username/Desktop/file.log
2
ответ дан 24 July 2018 в 18:42
  • 1
    +1, но я думаю, что оболочка должна быть bash, она должна быть объявлена ​​в начале скрипта, так как #!/bin/bash и /bin/sh должны быть удалены из задания cron. Кроме того, возможно, функция должна быть экспортирована после определения в .bashrc: export -f mounted. – pa4080 13 September 2017 в 15:15

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

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