crontab -l:

* * * * * /Users/michel/Desktop/myScript.sh

myScript.sh:

#!/bin/bash
/usr/local/bin/growlnotify -t 'Fact' -m "$(/Users/michel/Desktop/anotherScript.sh data.txt)" -n 'myApp'

он не сообщает об ошибке, но сообщение growlnotify пустое, поэтому "$(/Users/michel/Desktop/anotherScript.sh data.txt)" не работает.

но если я /usr/local/bin/growlnotify -t 'Fact' -m "$(/Users/michel/Desktop/anotherScript.sh data.txt)" -n 'myApp' из bash вручную, он будет работать как запланировано.

1 ответ1

1

Сценарии оболочки, вызываемые из cron являются неинтерактивными оболочками, не входящими в систему, что означает, что они вызываются в своего рода радикально урезанной среде и не используют никаких типичных сценариев запуска оболочки (.profile , .bashrc , так далее.).

Я предполагаю, что anotherScript.sh полагается на то, что не доступно по умолчанию в этом режиме. Как то, что определено в обычных загрузочных файлах входа в систему или интерактивной оболочки, которые не были получены.

Смотрите справочную страницу bash (отлично) о различных способах вызова bash и о том, какие файлы запуска он ищет в каждом конкретном случае.

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