Đặt PATH cho đơn vị systemd


13

Làm cách nào để thiết lập PATH cho các vỏ không đăng nhập trong CentOS 7?

Cụ thể, tôi có một đơn vị systemd cần nhị phân trong /usr/local/texlive/2016/bin/x86_64-linux.

Tôi đã cố gắng cài đặt nó nhưng /etc/environmentvới PATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATHPATH của tôi /usr/local/texlive/2016/bin/x86_64-linux:$PATH:/usr/local/sbin:/usr/sbin.

Tôi tạo ra /etc/profile.d/texlive.shvới export PATH="/usr/local/texlive/2016/bin/x86_64-linux:${PATH}"nhưng điều đó chỉ làm việc cho vỏ đăng nhập.

Tôi đã xem Set Path cho tất cả người dùng (Shell đăng nhập và không đăng nhập) nhưng giải pháp đã được thử ở trên.

Tôi đã xem Cách thêm đường dẫn đến hệ thống $ PATH cho tất cả vỏ không đăng nhập và vỏ đăng nhập của người dùng trên debian nhưng không có giải pháp được chấp nhận và tôi không chắc chắn tôi muốn sửa đổi /etc/login.defsvì nó có thể bị thay đổi trong bản cập nhật.

Câu trả lời:


17

Câu trả lời đơn giản nhất là đặt phần PATHnhư một phần ExecStartlệnh của bạn trong tệp Systemd Unit. Ví dụ: nếu bạn hiện có

ExecStart=/bin/mycmd arg1 arg2

sau đó đổi nó thành

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

Việc mở rộng $PATHsẽ được thực hiện bằng bash, không phải systemd. Các lựa chọn thay thế như sử dụng Environment=PATH=/new/path:$PATHsẽ không hoạt động vì systemd sẽ không mở rộng $PATH.


Nếu tôi gói lệnh theo cách này VÀ sử dụng tệp profile.d (tôi cũng muốn thêm đường dẫn cho shell đăng nhập), tôi vẫn cần đặt đường dẫn trong ExecStart chứ? Hoặc sẽ đọc từ profile.d?
Agrajag9

Tôi nghĩ bạn vẫn sẽ cần thiết lập PATH trong ExecStart. Bash có thể sẽ chỉ đọc từ profile.d nếu đó là shell đăng nhập. Bạn có thể thử thêm --logintrước khi -cbuộc điều này thay vì giải quyết PATH, nhưng bạn sẽ thực hiện bash chạy nhiều thiết lập có thể không hoạt động tốt trong môi trường systemd trần và cung cấp cho bạn lỗi trong nhật ký nhật ký.
meuh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.