Tôi sai lầm với các biến môi trường được đặt cho kịch bản của tôi về nơi tôi this post cần biến env $ DBUS_SESSION_BUS_ADDRESS để được đặt, nhưng nó sẽ không khi tôi gọi kịch bản là root. Bạn có thể đọc qua điều đó, nhưng cuối cùng bạn có thể kiểm tra xem liệu% ENV có chứa các biến cần thiết của bạn và nếu không thêm chúng.
Từ perlvar
%ENV
$ENV{expr}
The hash %ENV contains your current environment. Setting a value in "ENV" changes
the environment for any child processes you subsequently fork() off.
Vấn đề của tôi là tôi đã chạy kịch bản dưới sudo và điều đó đã không giữ lại tất cả các biến env của người dùng của tôi, bạn đang chạy các kịch bản dưới sudo hoặc như một số người dùng khác, nói www-data (apache)?
đơn giản kiểm tra:
[email protected]:~$ perl -e 'print $ENV{q/MY_ENV_VARIABLE/} . "\n"'
và nếu điều đó không làm việc thì bạn sẽ cần phải thêm nó vào% ENV ở phía trên cùng của kịch bản của bạn.
Nguồn
2010-11-20 13:45:07
Điều này là sai. Cuộc gọi 'system' KHÔNG tôn trọng $ SHELL theo bất kỳ cách nào, hình dạng hoặc hình thức nào. Xem câu trả lời của Matt Kane – DVK