Проблема при запуске скрипта bash с исходной командой - PullRequest
1 голос
/ 30 апреля 2020

Мне нужно активировать виртуальную среду (venv), поэтому я запускаю эти команды вручную в терминале:

source .venv/bin/activate     # To activate the virtual env.

и

deactivate                    # To deactivate the virtual env

Это прекрасно работает при запуске вручную. Теперь мне нужно вставить эти команды в скрипт bash, чтобы AWS CodeDeploy развернул его на сервере Ubuntu 18.04.

Мой bash скрипт с именем after_install.sh выглядит следующим образом ...

#!/usr/bin/env bash

set -e
source .venv/bin/activate
## DO SOME STUFF ##
deactivate

Для локального тестирования я сделал исполняемый скрипт и запустил скрипт, используя bash after_install.sh. Но ничего не случилось. Это не активирует виртуальную среду. Кажется, что ни одна из вышеперечисленных команд не работала при запуске сценария bash.

Я не понимаю, почему эти команды работают, когда я запускаю их вручную, но не с помощью сценария bash. Что здесь происходит? Мне нужно написать эти команды внутри скрипта bash, чтобы AWS CodeDeploy мог развернуть его на сервере.

1 Ответ

0 голосов
/ 30 апреля 2020

Не полагайтесь на activate в этом контексте. Вне вашего скрипта сделайте source activate и затем проверьте ваш PATH. Скопируйте значение PATH и в своем сценарии установите рабочий путь к скопированному значению:

#!/usr/bin/env bash
setenv PATH='copied_value_of_path'
# do stuff

На данный момент я должен предположить, что вы запустите один или несколько сценариев python в своем " DO SOME STUFF ". Отредактируйте скрипт (ы) и убедитесь, что у вас есть что-то вроде:

#!/bin/env python

в качестве первой строки каждого скрипта. Это соглашение сценария оболочки, позволяющее оболочке знать, какой интерпретатор использовать для этого сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...