которым он запускается (User=)?
Собственно...
И да... В самом *.service /usr/bin/bash -то запускается?
Нет там команда выполняется - бинарник на go.
Я слишком жалок умом, чтоб это понять. :(
Ну так с какого перепугу там вообще должен использоваться .bashrc? Бинарник на go ни за какие .bashrc не знает! А зачем вообще возникла надобность в интерпретации .bashrc?
Бинарник не работает без переменных окружения, которые определены в bashrc. Но указание `EnvironmentFile=.../.bashrc`эффекта нужного не даёт.
Разумеется не даёт. Ибо у EnvironmentFile= формат вида ENVIRONMENT="value", по одному на строчку, а .bashrc это банальный скрипт, со всякими export и этим вот всем. Правильный вариант: mkdir -p ~/.config/environment.d; touch ~/.config/environment.d/10-vars-for-go.conf В этот файл переместить все нужные для бинарника переменные из .bashrc Тогда, если это юзерский *.service, то вообще ничего не нужно делать ибо при логине все переменные из ~/.config/environment.d/*.conf наследуются всеми юнитами и процессами пользователя. Если-же *.service пишется как системный, с запуском от этого юзера, то тогда ему просто подкидываешь этот файл через EnvironmentFile=.
Или, если опций немного, можно в самом юните указать
Или да. Но варианты с отдельными файлами мне нравятся больше.
Спасибо. Хотите верьте, хотите нет, но до файла со списком переменных нужных и прописыванием его в EnvironmentFile= я додумался. Сделал env > systemd_env.sh и почистил от ненужного. Ну и я так понял что обновлять этот файл автоматически тоже сервис Simple нужно сделать, который будет на изменение bashrc реагировать. Просто надеялся что можно как-то сделать без этих велосипедофф.
Обсуждают сегодня