2013-03-15 20 views
11

Próbuję znaleźć najlepszy sposób na ustawienie zmiennych środowiskowych za pomocą lalek.Ustawianie zmiennych środowiskowych za pomocą lalek

Mogę użyć exec i po prostu zrobić export VAR=blah. Jednak będzie to trwało tylko dla bieżącej sesji. Myślałem także o dodaniu go na końcu pliku takiego jak bashrc. Jednak nie sądzę, że istnieje wiarygodna metoda sprawdzenia, czy wszystko jest gotowe; więc z każdą kolejną laleczką zostanie dodana.

+1

Czy "ustawianie zmiennej" nie oznacza "edytuj pliku rc"? Czy naprawdę chcesz wdrożyć zawartość w pliku? –

+0

Możliwe jest także zdefiniowanie zmiennych środowiskowych dla całego systemu poprzez utworzenie pliku/etc/environment z listą zmiennych KEY = VALUE. – izi

Odpowiedz

20

chciałbym spojrzeć na this related question.

*.sh skrypty w /etc/profile.d są odczytywane w czasie logowania użytkownika (jak mówi poczta, jednocześnie /etc/profile pochodzi)

Zmienne export -ed w każdym skrypcie umieszczonym w /etc/profile.d będzie więc dostępny dla użytkowników .

Następnie można użyć zasobu file, aby upewnić się, że to działanie jest idempotent. Np

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

Jeśli dodać go do swojej bashrc można sprawdzić, że jest to w hash ENV wykonując

ENV[VAR] 

Który powróci => „bla”

+0

Dzięki, i jak mam powiedzieć lalce, aby uruchamiała polecenie tylko, jeśli nie znajduje się w haasie ENV? – Jake232

+0

Powinien być ENV ['VAR'] aby uzyskać dostęp do zmiennej środowiskowej VAR – Spooner

+0

'chyba, że ​​ENV [VAR];' 'puts" To jest twój kod ";' 'end;' –

1

albo alternatywny sposób do indempotent rezultacie:

przykładu

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

ta pozwala opcjonalne zmienna środowiska być ustawiony, kiedy obecność stosowania pinto sprawia, że ​​jest on bardziej zachętą niż zmuszaniem użytkownika do komponowania użytkownika, niezależnie od tego, jakie aplikacje mogą znaleźć się na pudełku.

0

Jeśli spojrzysz na Github's Boxen, źródło skryptu (/opt/boxen/env.sh) z ~/.profile. Ten skrypt uruchamia kilka rzeczy, w tym:

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

Te skrypty z kolei ustawiają zmienne środowiskowe dla odpowiednich modułów.