Я пытаюсь настроить задачу cron для запуска регрессионных тестов для программного обеспечения, которое обычно работает в интерактивной среде (CASA, для любопытных: http://casa.nrao.edu/). У меня есть сценарий оболочки, который в форме MWE (mwe.sh
) делает:
casapy -c mwe.py
где предполагается выполнить этот скрипт. casapy
- довольно сложный бизнес, который много чего делает внутри, включая импорт и настройку клиента ipython для многопроцессорной обработки.
Вот моя проблема: если я запускаю код в интерактивном режиме, то есть casapy -c mwe.py
в командной строке оболочки bash, это работает.
Если я бегу:
source mwe.sh
код по-прежнему работает точно так, как ожидалось, и выполняет тесты. Большой!
Если вместо этого я бегу
bash mwe.sh
скрипт запуска зависает постоянно. Я проследил это до нескольких разных мест в скрипте запуска, которые все могут работать независимо друг от друга.
Итак, мой вопрос: каковы различия между командами запуска в среде интерактивной оболочки и внутри скрипта? В частности, какие различия можно сузить до различий между source file.sh
и sh file.sh
?
В частности, в контексте задания cron, которое я пытаюсь запустить, есть ли способ сделать эквивалент source
файла в интерактивной командной строке?
РЕДАКТИРОВАТЬ: последний кусок информации - я думаю, что эта ошибка происходит только на Mac, а не на Linux, но я не знаю, предоставляет ли она вообще какую-либо полезную информацию, потому что основной код несколько отличается для двух платформ.