Встановіть PATH для системного блоку


13

Як встановлюється PATH для оболонок без входу в CentOS 7?

Зокрема, у мене є системний блок, який потребує бінарних файлів у /usr/local/texlive/2016/bin/x86_64-linux.

Я спробував встановити його в /etc/environmentс , PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATHале тоді мій шлях був /usr/local/texlive/2016/bin/x86_64-linux:$PATH:/usr/local/sbin:/usr/sbin.

Я створив /etc/profile.d/texlive.shз export PATH="/usr/local/texlive/2016/bin/x86_64-linux:${PATH}"але працював тільки для входу в оболонках.

Я переглянув Set Path для всіх користувачів (оболонки для входу та не входу в систему), але рішення було вже спробувано вище.

Я переглянув, як додати шлях до системи $ PATH для оболонки без входу та оболонки для входу на debian, але прийнятого рішення немає, і я не впевнений, що хочу змінити, /etc/login.defsоскільки це може змінитись в оновленнях.

Відповіді:


17

Найпростіша відповідь - встановити PATHяк частину вашої ExecStartкоманди у системному файлі Unit. Наприклад, якщо у вас є

ExecStart=/bin/mycmd arg1 arg2

потім змініть його на

ExecStart=/bin/bash -c 'PATH=/new/path:$PATH exec /bin/mycmd arg1 arg2'

Розширення $PATHбуде здійснюватися bash, а не systemd. Такі альтернативи, як використання Environment=PATH=/new/path:$PATH, не працюватимуть, оскільки systemd не розширить $PATH.


Якщо я обмотаю команду таким чином І використовую файл profile.d (я також хочу, щоб шлях додався до оболонок входу), мені все-таки потрібно встановити шлях у ExecStart? Або це буде читати з profile.d?
Agrajag9

Я думаю, вам все одно потрібно буде встановити PATH у ExecStart. Баш, ймовірно, читатиметься лише з profile.d, якщо це оболонка для входу. Ви можете спробувати додати --loginдо цього, -cщоб примусити це замість встановлення PATH, але ви будете робити bash запускати багато налаштувань, які можуть не працювати добре в голому системному середовищі, і даватимуть помилки в журналі журналу.
meuh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.