2013-03-18 12 views
7

Piszę skrypt powłoki, aby odczytać plik, który ma parę klucz = wartość i ustawić te zmienne jako zmienne środowiskowe. Ale mam wątpliwości, czy zrobię source file.txt, który ustawi zmienne zdefiniowane w tym pliku jako zmienną środowiskową, czy powinienem czytać wiersz po wierszu i ustawić go za pomocą polecenia eksportu?Unix: Jaka jest różnica między źródłem i eksportem?

Czy polecenie źródła jest w tym przypadku inne niż eksport?

+0

co skorupa używasz? – shx2

+2

Dlaczego po prostu nie spróbujesz się dowiedzieć? – Mat

+0

Byłbym bardzo nieufny wobec 'źródła' pliku zdefiniowanego przez użytkownika w skrypcie powłoki w środowisku produkcyjnym. Wyobraź sobie niezadowolonego pracownika dodającego wiersz 'rm -rf $ {HOME}' (lub gorzej) ... – Johnsyweb

Odpowiedz

12

Po przesłaniu pliku, przypisania zostaną ustawione jako zmienne, ale nie jako zmienne środowiskowe, chyba że ustawiono opcję allexport. Jeśli chcesz, aby zmienne zostały umieszczone w środowisku, znacznie łatwiej jest użyć pliku allexport i source niż odczytać plik i jawnie użyć export. Innymi słowy, należy zrobić:

set -a 
. file.txt 

(wolę ., ponieważ jest bardziej mobilny niż source, ale source działa dobrze w bash.)

Powiązane problemy