2010-10-05 31 views
12

Tôi đã tạo một dịch vụ linux chạy dưới dạng deamon (và bắt đầu từ /etc/init.d/X). Tôi cần phải thiết lập một số biến môi trường có thể được truy cập bởi ứng dụng.Làm cách nào để tôi có thể đặt biến môi trường trong dịch vụ Linux của mình cho Asterisk mặc dù nó không có người dùng thực?

Đây là kịch bản. Ứng dụng này là một loạt các tập lệnh Perl AGI phụ thuộc vào (và do đó cần phải chạy như) người dùng dấu sao nhưng dấu hoa thị không có một trình bao. Lý tưởng nhất là tôi chỉ cần thiết lập điều này trong /home/asterisk/.bashrc nhưng điều đó không tồn tại cho dấu hoa thị.

Làm cách nào để đặt biến môi trường cho ứng dụng của mình trong môi trường đang chạy của người dùng sao cho ứng dụng của tôi có thể sử dụng chúng?

Trả lời

20

Hoặc đặt chúng trong các kịch bản khởi động (/etc/init.d/yourdaemon), hoặc đặt một dòng trong tập tin đó trông giống như:

. /etc/yourdaemon.env 

và đặt các biến môi trường trong tập tin đó, bằng cách sử dụng cú pháp export VAR=value. Trên các hệ thống giống như Red Hat, tôi tin rằng địa điểm chính xác cho một tệp như vậy là /etc/sysconfig. Debian/Ubuntu dường như có /etc/default cho mục đích này.

+0

Đã thử cách tiếp cận đó. Vấn đề đang xảy ra với điều đó là '/etc/init.d/yourdaemon' chạy dưới dạng root và do đó chúng không có sẵn cho kịch bản lệnh của tôi, chạy như dấu hoa thị. – domino

+0

Làm cách nào để chuyển đổi người dùng? –

+0

start-stop-daemon --start --chuid = $ USER - $ DAEMON. Điều này thực hiện các ứng dụng như $ USER – domino

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