Это не сработает. Модель процесса UNIX требует, чтобы определенные атрибуты были частными для процесса. Это включает в себя такие вещи, как текущий рабочий каталог процесса и его переменные среды . Каждый из этих личных атрибутов наследуется; либо неявно, либо явно, в зависимости от того, как дочерний процесс порожден его родительским процессом. Дочерний процесс не может изменить эти частные атрибуты своего родителя.
Существуют способы обойти вышеупомянутое ограничение. Например, дочерний процесс может записать новые пары var=value
в стандартный вывод. Затем родительский процесс, который запускает вашу программу python, может прочитать эти строки и добавить их в свою среду. В вашем случае ваша python программа будет делать print("MYVAR=my_value")
, и вы будете запускать ее из скрипта gitlab как eval $(python set_myvar.py)
.