Кажется, что переменная среды не установлена, пока она находится в сценарии оболочки.

Можно использовать sedдиапазоны:

sed '/^ *ssl:/,/^ *[^:]*:/s/enabled: false/enabled: true/' file

Границами диапазона являются/^ *ssl:/(начало раздела ssl )и/^ *[^:]*:/(любой другой раздел ).

s— обычная команда замены.

0
20.02.2020, 19:08
1 ответ

Вы должны вызывать скрипт как

source bin/postactivate

Процесс имеет переменные окружения. Предположим, что идентификатор процесса вашей оболочки равен 1003. Вы вызываете sudo sh./bin/postactivate. PID 1003 разветвляется, чтобы создать новый процесс, скажем, 1108. Процесс 1108 вызывает exec, чтобы изменить себя на sudo. Затем sudoизменяется на shдля обработки вашего скрипта. Таким образом, PID 1108 устанавливает переменные среды для себя , такие как STATIC _ROOT. Затем он выходит. Ваша оболочка (PID 1003 ), которая ожидала 1108, печатает новое приглашение, но в среде для PID 1003 ничего не изменилось.

0
28.04.2021, 23:22

Теги

Похожие вопросы