2016-02-16 22 views
11

Cách đúng để đặt biến PATH trong tệp đơn vị systemd là gì? Sau khi xem một vài ví dụ, tôi đã cố gắng sử dụng định dạng bên dưới, nhưng biến dường như không mở rộng.systemd: Chỉ thị "Môi trường" để đặt PATH

Environment="PATH=/local/bin:$PATH" 

Tôi đang thử tính năng này trên CoreOS với phiên bản hệ thống dưới đây.

systemd 225 
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS -ACL +XZ -LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD -IDN 

Trả lời

16

Bạn không thể sử dụng EnvVars trong chỉ thị Environment. Toàn bộ Environment= sẽ bị bỏ qua. Nếu bạn sử dụng EnvironmentFile=, thì tệp được chỉ định sẽ được tải mà không cần thay thế. Vì vậy, PATH=/local/bin:$PATH sẽ là chính xác điều đó và điều này có thể không phải là điều bạn muốn.

Theo CentOS7, các công trình sau đây hoạt động.

# /etc/systemd/system/nagios.service.d/env.conf 
[Service] 
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" 

> sudo systemctl daemon-reload 
> sudo systemctl restart nagios 
> sudo cat /proc/28647/environ 
... 
PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 
... 
+0

Điều này làm việc cho tôi, ngoại trừ duy nhất PATH của tôi được thêm vào trước với '/ bin' và đánh bại mục đích thiết lập PATH tùy chỉnh của tôi. Tức là, nếu tôi thêm 'Environment =" PATH = foo: bar "' Tôi sẽ nhận 'PATH =/bin: foo: bar' cho dịch vụ của mình. – Xabs

+0

Juts chuyển đổi nhận xét của tôi thành một câu hỏi thích hợp: http://stackoverflow.com/questions/39576006/systemd-prepending-bin-to-environment-path – Xabs

+0

Câu trả lời này hoạt động cho việc thiết lập PATH ('Environment =" PATH =/local/bin'), nhưng không thêm/thêm vào PATH ('Environment =" PATH =/local/bin: $ PATH "'), phải không? –

1

Bạn có thể sử dụng các chỉ thị EnvironmentFile= trong phần units để thiết lập biến môi trường.

Chỉ cần đặt các biến là key=value cặp và nó sẽ hoạt động.

Thời gian chạy chỉ là bất kỳ tệp nào bạn chỉ định của nguồn.

Bạn có thể tạo tệp bằng cách sử dụng chỉ thị write_files.

Các vấn đề liên quan