Configure o PATH para uma unidade systemd

8

Como se define o PATH para shells não-login no CentOS 7?

Especificamente, eu tenho uma unidade systemd que precisa de binários em /usr/local/texlive/2016/bin/x86_64-linux .

Eu tentei defini-lo em /etc/environment com PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH , mas meu PATH foi /usr/local/texlive/2016/bin/x86_64-linux:$PATH:/usr/local/sbin:/usr/sbin .

Eu criei /etc/profile.d/texlive.sh com export PATH="/usr/local/texlive/2016/bin/x86_64-linux:${PATH}" , mas isso só funcionou para shells de login.

Eu analisei Definir caminho para todos Usuários (Login e Non-login Shells) , mas a solução já foi tentada acima.

Eu olhei para Como adicionar um caminho para o sistema $ PATH para todos os usuários não-login shell e login shell no debian mas não há nenhuma solução aceita e não tenho certeza se quero modificar /etc/login.defs porque pode ser alterado em uma atualização.

    
por Agrajag9 27.02.2017 / 13:05

1 resposta

10

A resposta mais simples é definir o PATH como parte do seu comando ExecStart no arquivo systemd Unit. Por exemplo, se você tem atualmente

ExecStart=/bin/mycmd arg1 arg2

altere-o para

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

A expansão de $PATH será feita por bash, não por systemd. Alternativas como usar Environment=PATH=/new/path:$PATH não funcionarão pois o systemd não expandirá o $PATH .

    
por 27.02.2017 / 14:45