Establecer RUTA para una unidad systemd

13

¿Cómo se configura la RUTA para shells sin inicio de sesión en CentOS 7?

Específicamente, tengo una unidad systemd que necesita binarios /usr/local/texlive/2016/bin/x86_64-linux.

Intenté configurarlo /etc/environmentcon, PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATHpero luego fue mi RUTA /usr/local/texlive/2016/bin/x86_64-linux:$PATH:/usr/local/sbin:/usr/sbin.

Creé /etc/profile.d/texlive.shcon export PATH="/usr/local/texlive/2016/bin/x86_64-linux:${PATH}"pero eso solo funcionó para shells de inicio de sesión.

Miré Establecer ruta para todos los usuarios (shells de inicio de sesión y sin inicio de sesión) pero la solución ya se intentó anteriormente.

Miré Cómo agregar una ruta al sistema $ PATH para el shell sin inicio de sesión de todos los usuarios y el shell de inicio de sesión en Debian, pero no hay una solución aceptada y no estoy seguro de querer modificarlo /etc/login.defsporque podría modificarse en una actualización.

Agrajag9
fuente

Respuestas:

17

La respuesta más simple es configurarlo PATHcomo parte de su ExecStartcomando en el archivo de la unidad systemd. Por ejemplo, si actualmente tiene

ExecStart=/bin/mycmd arg1 arg2

luego cámbielo a

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

La expansión de $PATHwill se realizará mediante bash, no systemd. Las alternativas como el uso Environment=PATH=/new/path:$PATHno funcionarán, ya que systemd no expandirá el $PATH.

meuh
fuente
Si envuelvo el comando de esta manera Y utilizo el archivo profile.d (quiero que también se agregue la ruta para los shells de inicio de sesión), ¿todavía necesitaría establecer la ruta en ExecStart? ¿O leerá eso de profile.d?
Agrajag9
Creo que aún necesitará establecer la RUTA en ExecStart. El bash probablemente solo leerá desde profile.d si es un shell de inicio de sesión. Puede intentar agregar --loginantes -cde forzar esto en lugar de configurar la RUTA, pero hará que bash ejecute mucha configuración que podría no funcionar bien en el entorno de sistema simple y le dará errores en el registro del diario.
meuh