Tôi có một dịch vụ chạy lúc khởi động, và trong dịch vụ đó, nó gọi một tập lệnh bash trong nền xuất một số biến môi trường. Vấn đề tôi gặp phải là các biến môi trường đó không được gửi đến cha mẹ của quá trình nền nên ngay khi tập lệnh của tôi được thực thi xong, chúng sẽ biến mất.
Ngoài ra, sau khi tập lệnh được chạy, dịch vụ sẽ gọi một tập lệnh khác khởi động ứng dụng mà tôi có. Ứng dụng này cần truy cập vào các biến môi trường.
Hệ thống RHEL tôi chạy nó có nghĩa là không bao giờ được đăng nhập bởi người dùng, nó chỉ khởi động và khởi động ứng dụng. Tôi biết rằng các biến môi trường cho một tiến trình cha / shell thực sự không thể được thiết lập bởi một shell process process con.
Tôi cần một cách để thực hiện điều này thông qua một tập lệnh được gọi bởi dịch vụ của tôi (không nhất thiết phải ở chế độ nền), không phải bằng cách thêm chúng vào dịch vụ của tôi (không hoạt động cho tôi) và không phải bằng cách lưu trữ chúng trong /etc/environment
hoặc .profile
hoặc bất cứ điều gì như vậy.
Trong dịch vụ của mình, tôi đã thử thêm các biến môi trường (không phải những gì tôi muốn làm):
export TEST=192.168.1.1
Tôi cũng đã thử điều này trong dịch vụ của mình:
TEST=192.168.1.1
export TEST=${TEST}
Tôi đã thử thay đổi cách dịch vụ của tôi gọi tập lệnh bash:
/bin/asdf/script &
Tôi cũng đã thử tìm nguồn cung cấp kịch bản để nó chạy trong cùng một vỏ (mà tôi nhận được từ cái này ):
. ./bin/asdf/script
#I'm very confused why this didn't work
Tôi cũng thấy điều này có vẻ thú vị nhưng nó không thực sự phát triển trong trường hợp của tôi.