Atur PATH untuk unit systemd


13

Bagaimana cara mengatur PATH untuk shell non-login di CentOS 7?

Secara khusus, saya memiliki unit systemd yang membutuhkan binari di /usr/local/texlive/2016/bin/x86_64-linux.

Saya mencoba mengaturnya /etc/environmentdengan PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATHtetapi kemudian PATH saya /usr/local/texlive/2016/bin/x86_64-linux:$PATH:/usr/local/sbin:/usr/sbin.

Saya buat /etc/profile.d/texlive.shdengan export PATH="/usr/local/texlive/2016/bin/x86_64-linux:${PATH}"tetapi itu hanya bekerja untuk shell login.

Saya melihat Set Path untuk semua Pengguna (Login dan Non-login Shells) tetapi solusinya sudah dicoba di atas.

Saya melihat Cara menambahkan path ke sistem $ PATH untuk semua shell non-login dan shell login semua pengguna di debian tetapi tidak ada solusi yang diterima dan saya tidak yakin saya ingin memodifikasi /etc/login.defskarena mungkin akan berubah dalam pembaruan.

Jawaban:


17

Jawaban paling sederhana adalah dengan mengatur PATHsebagai bagian dari ExecStartperintah Anda dalam file Unit Systemd. Misalnya, jika saat ini Anda miliki

ExecStart=/bin/mycmd arg1 arg2

lalu ubah ke

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

Perluasan $PATHakan dilakukan oleh bash, bukan systemd. Alternatif seperti menggunakan Environment=PATH=/new/path:$PATHtidak akan berfungsi karena systemd tidak akan memperluas $PATH.


Jika saya membungkus perintah dengan cara ini DAN menggunakan file profile.d (saya ingin path ditambahkan untuk shell login juga), apakah saya masih perlu mengatur path di ExecStart? Atau akankah itu dibaca dari profil.d?
Agrajag9

Saya pikir Anda masih perlu mengatur PATH di ExecStart. Bash mungkin hanya akan membaca dari profil.d jika itu adalah shell login. Anda dapat mencoba menambahkan --loginsebelum -cuntuk memaksa ini daripada menyelesaikan PATH, tetapi Anda akan membuat banyak bash run setup yang mungkin tidak berfungsi dengan baik di lingkungan bare systemd, dan memberi Anda kesalahan dalam log jurnal.
meuh
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.