2017-06-05 6 views
0

Ich habe eine Datei, die wie folgt aussieht.xargs mit Export funktioniert nicht

HOST=localhost 
PORT=8080 

Ich möchte die oben genannten in die Umgebung exportieren. Ich führe den folgenden Befehl aus, um die Variablen in Datei in Umgebung zu exportieren.

cat <FileName> | xargs export

Ich erhalte die folgende Ausnahme bei dem Versuch, den obigen Befehl auszuführen.

xargs: export: No such file or directory

+0

Mögliche Duplikate von [Übergeben Sie alle Variablen von einem Shellscript zum anderen?] (Https://stackoverflow.com/questions/9772036/pass-all-variables-from-one-shellscript-to-another) –

+0

Warum haben Sie die Antwort nicht annehmen? Hat es funktioniert? nicht arbeiten? Wenn Sie es nicht wissen lassen, können wir Ihnen nicht helfen – Inian

Antwort

2

Warum xargs verwenden? Wenn Sie gerade source die Datei in dem aktuell Shell

Sie können das set builtin, zusammen mit den export stattdessen einem nicht-Shell wie xargs gebautet zu verwenden. Just do unter

set -o allexport 
. ./file_containing_variables 
set +o allexport 

Die Nutzung von allexport Flagge mit Ihnen festgelegt (-o)/ungesetzt (+ o) können Sie Variablen direkt von der Kommandozeile exportieren. Die zweite Zeile ist der POSIXsource (Punkt gefolgt von Variablenname) Befehl, um alle Variablen an die aktuelle Shell und innerhalb der allexport Flag zu reflektieren, es wird permanent verfügbar gemacht.

Weitere Informationen finden Sie auf Seite GNU set built-in.


Ein anderer Weg in bash Wieder Richtung auf die Datei unter Verwendung der Eingabe

while IFS= read -r line; do 
    export "$line" 
done <file_containing_variables 
0

export ist eine eingebaute Funktion, und nimmt xargs ausführbares als Argument, keine Funktion. Es ist auch nicht sinnvoll, export in ein Skript oder eine Subshell zu verpacken, xargs wird in diesem Fall nicht fehlschlagen, aber Ihre Vars werden trotzdem nicht exportiert. Also besser, einen anderen Ansatz zu wählen, ohne xargs, wie im vorherigen Kommentar gezeigt.

Verwandte Themen