2008-11-20 28 views
7

içinde nasıl dışa aktarılır Güncel alanın dışında kullanılabilir bir bash komut dosyasından bir sistem ortamı değişkeni ayarlamanız gerekir.Bir sistem kapsam ortamı değişkeni bash

ihracat MY_VAR =/opt/my_var

Ama yine de bir sistem düzeyinde kullanılabilir olması ortam değişkeni gerekir: Yani normalde böyle ortam değişkenleri dışa olacaktır. Mümkün mü?

cevap

5

İstediğin yapmaya bildiğim tek yoludur:

#!/bin/bash 
echo MYVAR=abc123 

Ve değişkenin değerini almak istediğinizde, sahip:

foo.sh olarak

, sahip aşağıdakileri yapmanız: yapmak istediğiniz ve bunu nasıl yapmak istiyorum, kaynak kullanımı hakkında Douglas Leeder önerisi kullanılabilir ne bağlı olarak

$ eval "$(foo.sh)" # assuming foo.sh is in your $PATH 
$ echo $MYVAR #==> abc123 

, ancak bütün dosya, işlevleri kaynak olacak ve herşey. Eval kullanarak, sadece yankılanan şeyler değerlendirilecektir.

+0

sadece kendim bunu çalışıyordu. Eval'a karşı argümandaki alıntıları bıraktığım için değerlendirme yaptım ve $ (foo) yaptım. Çalışmadı. Sözdizimi düzeltmesi için teşekkürler. – jmanning2k

13

Gerçekten değil - bir alt işlemde çalıştırıyorsanız, ebeveyni etkileyemezsiniz.

İki olasılık:

1) Kaynak komut çalıştırmak yerine (source . bakınız):

 
    source {script} 

2) Var komut dizisi ihracat komutları ve eval o:

 
    eval `bash {script}` 
OR: 
    eval "$(bash script.sh)" 

DÜZENLEME: Kaynak yerine değerlendirilmek üzere ikinci seçeneği düzeltildi. Opps.

1

/etc/profile değişkenini ayarlayın (gerekirse dosyayı oluşturun). Bu, esas olarak her bash sürecine değişkenlik kazandıracaktır.

0

/etc/profile değişkenini ayarlayın (gerekirse dosyayı oluşturun). Bu, esas olarak her bash sürecine değişkenlik kazandıracaktır. Her YENİ bash sürecine

... ...

İlgili konular