Повторное использование процесса в golang для сохранения переменных среды - PullRequest
0 голосов
/ 06 марта 2020

В настоящее время я борюсь с повторным использованием процесса в golang.

Еще немного контекста: CLI, который я собираюсь использовать, будет использоваться в разработке, CLI будет использоваться, поэтому настройте среду разработки ru упростите развертывание / сборку и тестирование, поддерживая это сразу. Чтобы сделать CLI гибким, я бы хотел, чтобы пользователи могли интегрировать пользовательские сценарии. Например, один сценарий переопределяет переменные среды docker, так что сценарий развертывания CLI развертывается в правильной среде. Эти среды предоставляются с помощью следующей команды: minikube docker-env этот сценарий выводит операторы export в stdout. Обычно вы запускаете eval $(minikube docker-env), чтобы применить эти переменные окружения к вашей текущей оболочке. Но я бы хотел, чтобы мой CLI мог совместно использовать эти переменные в сценариях.

Теперь, допустим, у меня определены две команды. A и B. Обе команды являются простым bash скриптом. Но может быть запущен в режиме или python, например.

Скрипт A:

export FOO="bar"

Скрипт B:

echo $FOO

Оба эти скрипта выполняются так:

cmd := exec.Command(bash, [PATH_TO_SCRIPT])
stdout, err := cmd.Output()

Чего я хотел бы добиться, так это того, что есть один процесс, в котором эти сценарии выполняются, но я изо всех сил пытаюсь найти способ как.

Причина, по которой я Чтобы добиться этого с помощью собственных определенных сценариев, пользователи CLI легко могут добавить сценарий и впоследствии использовать эти переменные среды.

1 Ответ

0 голосов
/ 07 марта 2020

Нет ответа на ваш вопрос, кроме: невозможно. Это потому, что ваш вопрос связан с фундаментальным недоразумением, как работают переменные окружения UNIX и как работает функция Go language exec.Command(). У процесса нет возможности изменить переменные окружения своего родителя; или любая другая программа. Вызов Go lang exec.Command() запускает новый процесс, который не может повлиять на переменные среды процесса, выполняющего это действие. Вам нужно переосмыслить свою архитектуру.

...