Bash скрипт для клонирования Git репозитория и запуска другого bash скрипта - PullRequest
0 голосов
/ 16 июня 2020

У меня проблемы с PYTHONPATH со скриптом bash, который я пытаюсь запустить. Там 2 bash скрипта, clone_and_run.sh находится в папке root. Это клонирование удаленного репо Git, а затем запуск другого bash скрипта в root этого Git репо.

Однако после клонирования репо и выполнения run.sh этот второй скрипт не может запускать сценарии Python в репо. Но если я go в репо root и выполняю run.sh, он работает нормально.

Вот структура папок:

root
|----clone_and_run.sh
|----repo(after cloning from remote)
    |----source
         |----script.py
    |----run.sh
clone_and_run.sh:

#!/usr/bin/env bash
set -e

PYTHONPATH=`pwd`./repo/:$PYTHONPATH

git clone https://---------(redacted)

bash ./repo/run.sh
#!/usr/bin/env bash
set -e

PYTHONPATH=`pwd`/../repo:$PYTHONPATH

python ./source/script.py

Это ошибка, которую я получаю, когда выполняю clone_and_run.sh: python: can't open file './source/script.py': [Errno 2] No such file or directory

После клонирования, если я go в repo и выполняю run.sh напрямую, он работает нормально. Я пробовал разные PYTHONPATH на обоих скриптах, не повезло.

1 Ответ

1 голос
/ 16 июня 2020

Вы не сделали cd, текущий рабочий каталог . при запуске run.sh не является каталогом сценария, он находится там, где запущен вызывающий.

Чтобы найти каталог запущенного сценария, мой обычный метод это readlink -f $0.

...