2013-03-18 3 views
7

Ich schreibe ein Shell-Skript, um eine Datei mit Schlüssel = Wert-Paar zu lesen und diese Variablen als Umgebungsvariablen festzulegen. Aber ich habe einen Zweifel, wenn ich source file.txt werde das die Variablen in dieser Datei definiert als Umgebungsvariable oder ich sollte die Datei Zeile für Zeile lesen und setzen sie mit Export-Befehl?Unix: Was ist der Unterschied zwischen Quelle und Export?

Ist der Quellenbefehl in diesem Fall anders als der Export?

+0

welche Shell verwenden Sie? – shx2

+2

Warum versuchst du es nicht einfach herauszufinden? – Mat

+0

Ich würde sehr vorsichtig sein, eine benutzerdefinierte Datei in einem Shell-Skript in einer Produktionsumgebung zu "quellen". Stellen Sie sich einen verärgerten Angestellten vor, der die Zeile 'rm -rf $ {HOME}' (oder schlechter) hinzufügt ... – Johnsyweb

Antwort

12

Wenn Sie die Datei source eingeben, werden die Zuweisungen als Variablen festgelegt, jedoch nicht als Umgebungsvariablen, es sei denn, die allexport-Option wurde festgelegt. Wenn Sie möchten, dass die Variablen in der Umgebung platziert werden, ist es viel einfacher, die Datei allexport und source als die Datei zu lesen und die export explizit zu verwenden. Mit anderen Worten, sollten Sie tun:

set -a 
. file.txt 

(I . bevorzugen, weil es als source mehr tragbar ist, aber source funktioniert gut in bash.)

Verwandte Themen