Alpine Linux редактирует PATH перед запуском службы OpenRC

У меня OpenRC запускает службу, которая вызывает java jar, но используемый ею PATH либо отличается от глобального PATH, либо служба запускается до того, как PATH можно будет редактировать.

Я попытался добавить Java в PATH в

  • сценарий \etc.profile.d
  • \etc\профиль
  • \etc\bash\bashrc

Но регистрация PATH в службе всегда показывает, что он используется по умолчанию:

      PATH=/bin:/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

Зависимость() в файле .service:

      depend() {
    after sshd
    after docker
}

1 ответ

Все три файла конфигурации, которые вы упомянули, предназначены для интерактивных оболочек — они загружаются, когда пользователь входит в систему на терминале. Но службы почти по определению запускаются полностью вне среды «входа пользователя» и никогда не обращают внимания на такую ​​конфигурацию оболочки.

Не существует такого понятия, как «глобальный PATH», как и любая другая переменная среды, она на самом деле зависит от процесса — любые изменения влияют только на это конкретное поддерево процесса. Например, если вы установите PATH в одном окне оболочки, изменение будет видно только программам, запущенным из этого конкретного окна, — даже другим вашим программам. Таким образом, поскольку файл /etc/profile читается только оболочками интерактивного входа, он будет влиять только на интерактивный вход в систему; изменения не распространяются «вверх».

(Другими словами, на самом деле не имеет значения, запускается ли ваш сервис «после sshd» или «после входа пользователя» — временная шкала изначально не является линейной, это дерево, в котором служба уже отличается от ваших входов в систему sshd .)

Насколько мне удалось выяснить, в OpenRC вы можете установить переменные среды, специфичные для службы, отредактировав/etc/conf.d/<service>, который представляет собой сценарий оболочки, использующий тот же синтаксис, что и /etc/profile (т. е. вам нужно использовать тот жеexport VAR=valueсинтаксис).

Другие вопросы по тегам