2013-03-15 48 views
11

Tôi đang cố gắng tìm ra cách tốt nhất để đặt một số biến môi trường với con rối.Đặt biến môi trường với con rối

Tôi có thể sử dụng lệnh exec và chỉ thực hiện export VAR=blah. Tuy nhiên, điều đó sẽ chỉ kéo dài trong phiên hiện tại. Tôi cũng nghĩ về việc thêm nó vào cuối một tập tin như bashrc. Tuy nhiên sau đó tôi không nghĩ rằng có một phương pháp đáng tin cậy để kiểm tra nếu nó là tất cả đã sẵn sàng ở đó; do đó, nó sẽ kết thúc lên nhận được thêm vào với mỗi chạy của con rối.

+1

Không phải là 'đặt một biến' một cách khác để nói 'chỉnh sửa tệp rc'? Vì vậy, bạn thực sự muốn triển khai nội dung trong một tệp? –

+0

Cũng có thể xác định các biến môi trường rộng của hệ thống bằng cách tạo tệp/etc/environment với KEY = VALUE danh sách các biến. – izi

Trả lời

20

tôi sẽ có một cái nhìn tại this related question.

*.sh script trong /etc/profile.d được đọc lúc người dùng đăng nhập (như các bài nói, đồng thời /etc/profile được nguồn gốc)

Biến export -ed trong bất kỳ kịch bản đặt trong /etc/profile.d do đó sẽ có sẵn cho người dùng của bạn .

Sau đó, bạn có thể sử dụng tài nguyên file để đảm bảo hành động này là idempotent. Ví dụ:

file { "/etc/profile.d/my_test.sh": 
    content => 'export MYVAR="123"' 
} 
0

Nếu bạn thêm nó vào .bashrc của bạn, bạn có thể kiểm tra xem nó trong băm ENV bằng cách làm

ENV[VAR] 

nào sẽ trở lại => "blah"

+0

Cảm ơn, và làm thế nào tôi sẽ nói với con rối để chỉ chạy lệnh nếu nó không nằm trong băm ENV? – Jake232

+0

Cần ENV ['VAR'] để truy cập biến môi trường VAR – Spooner

+0

'trừ khi ENV [VAR];' 'đặt" Đây là mã của bạn ";' 'kết thúc;' –

1

Hoặc một phương tiện thay thế cho một kết quả indempotent:

Ví dụ

if [[ ! grep PINTO_HOME /root/.bashrc | wc -l > 0 ]] ; then 
     echo "export PINTO_HOME=/opt/local/pinto" >> /root/.bashrc ; 
fi 

Tùy chọn này cho phép biến môi trường này để được thiết lập khi có sự hiện diện của ứng dụng pinto làm cho nó được cảnh báo hơn là phải soạn một người dùng .bash_profile của người dùng bất kể ứng dụng nào có thể bật lên trên hộp.

0

Nếu bạn xem qua Github's Boxen, họ sẽ phát một tập lệnh (/opt/boxen/env.sh) từ ~/.profile. Tập lệnh này chạy một loạt các nội dung bao gồm:

for f in $BOXEN_HOME/env.d/*.sh ; do 
    if [ -f $f ] ; then 
    source $f 
    fi 
done 

Các tập lệnh này, đặt biến môi trường cho mô-đun tương ứng.

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