Có môi trường đọc mới nhất từ ​​/ etc / môi trường cho một dịch vụ


17

Cách tốt nhất để cung cấp các biến môi trường được xác định trong /etc/environmentmột dịch vụ mới nhất là gì?

Tôi nghĩ rằng chỉ đơn giản là tìm nguồn cung ứng chúng .trong phần kịch bản không hoạt động, bởi vì các tập lệnh được thực thi theo shđó sẽ cần bổ sung exporttrước mỗi định nghĩa ...

Câu trả lời:


16

Cuối cùng tôi đã có câu trả lời trên #upstartkênh IRC. Tại một số điểm, upstart sẽ nhận được hỗ trợ PAM thích hợp và do đó /etc/environmenttự đọc . Cho đến lúc đó, mẹo là thực thi lệnh bằng su. susử dụng PAM và sẽ thiết lập môi trường thích hợp. Thí dụ:

script 
    exec su root -c /usr/sbin/job_needing_envs
end script

Cảm ơn bạn đã đăng câu trả lời, bạn đã giúp tôi trong cùng một vấn đề.
Maxim Veksler

lỗi:su: must be run from a terminal
Kuf

3

Tôi có xu hướng sử dụng eval $(cat /etc/environment | sed 's/^/export /')

Phải mất mỗi dòng trong /etc/environment, prepends export, và đánh giá nó:

script
exec /bin/bash <<'EOT'
  eval $(cat /etc/environment | sed 's/^/export /')
  do_what_you_need_to
EOT
end script

Tại sao bạn sử dụng exec và không chỉ đặt xuất trực tiếp trong khối script?
Guss

1

Thêm phần này vào tập lệnh của bạn:

. /etc/environment
export VAR1 VAR2 VAR3

trong đó các biến bạn cần được chỉ định thay cho chỗ dành sẵn kiểu "VAR1".


2
Bằng cách đó, tôi phải giữ đồng bộ cấu hình khởi động và / etc / môi trường theo cách thủ công, điều này (theo ý kiến ​​của tôi) không tốt hơn việc xác định các biến hai lần ...
Nikratio

Tôi sẽ không sử dụng /etc/environmentđể xác định tất cả các biến cần thiết của bạn. Để lại đó là một tập tin tĩnh. Trên hệ thống của tôi, tôi chỉ có thể tìm thấy một vài tập lệnh sử dụng nó. Tạo một tệp gọi là một cái gì đó giống như /etc/environment.localvà đặt các biến của bạn xuất vào đó và nguồn tệp đó . Sau đó, bạn chỉ phải duy trì một tập tin.
Tạm dừng cho đến khi có thông báo mới.

/ etc / môi trường được đọc bởi pam_env.so (chứ không phải bởi bất kỳ tập lệnh nào), vì vậy nó có sẵn cho bất kỳ thông tin đăng nhập nào. Thật không may, chỉ các chương trình được khởi động bởi mới bắt đầu không có quyền truy cập vào tệp đó bởi defaulht, thật không may.
Nikratio
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.