Wie exportieren Sie eine variable über shell-script?
ein.sh
#! /bin/sh
export x=/usr/local
können wir tun source ./a
im Befehl-Linie. Aber ich brauche den export durch shell-Skript.
b.sh
#! /bin/sh
. ~/a.sh
kein Fehler... aber $x
im Kommando-Zeile nichts. Also Sie hat nicht exportieren.
Jede Idee, wie es funktionieren?
ein.sh
#! /bin/sh
export x=/usr/local
-----------
admin@client: ./a.sh
admin@client: echo $x
admin@client: <insert ....>
Verwandte: superuser.com/questions/176783/...
InformationsquelleAutor CppLearner | 2012-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht tun, ein export über ein shell-script, da ein shell-script läuft in einem Kind-shell-Prozess, und nur die Kinder des Kindes shell Erben würde den export.
Den Grund für die Verwendung der Quelle ist die aktuelle shell führt die Kommandos aus
Es ist sehr üblich, um Platz export-Befehle in eine Datei wie .bashrc, die eine bash-Quelle wird auf Start (oder ähnliche Dateien für andere shells)
Andere Idee ist, könnten Sie ein shell-Skript, das erzeugt einen export-Befehl, wie es ist ausgegeben:
Und dann haben die aktuellen shell, die Ausgabe
(Hinweis oben, dass der Aufruf des scripts ist umgeben von backticks, um die shell zu ausführen die Ausgabe des Skriptes).
^D
?Geben Sie Strg-D und dann zurück zu Ende zu schreiben die Datei, die Sie erstellen mit Katze
Danke. Ich habe meinen Beitrag aktualisiert. Ich habe versucht, aber wenn ich mir ausgedruckt, die es gerade gab mir eine leere Zeile. Nichts ist passiert?
Ich bin mir nicht sicher, was genau Sie Tat, aber es ist nicht das, was ich getan habe. Achte auf die backticks um die Ausführung des shell-script, und das script gibt einen export-Befehl eher als die Ausführung selbst.
Danke. Es funktioniert.
InformationsquelleAutor Chris Stratton
Können Sie stellen Sie den export-Anweisungen in einem shell-Skript und verwenden Sie dann die "source" - Befehl, um Ausführung in den aktuellen Prozess:
Ich hoffe, das hilft.
Diese Antwort sollte einen tick
Diese Antwort sollte einen tick +1
InformationsquelleAutor Emmanuel
Export eine variable in der Umgebung macht nur, dass die variable sichtbar zu Kind-Prozesse. Es gibt keine Möglichkeit für ein Kind, die Umwelt zu modifizieren seiner Eltern.
InformationsquelleAutor Mark Reed
Andere Weise, die Sie es tun können (stehlen/erläutern, auf die Idee, oben), ist das Skript in ~/bin und machen Sie sicher, dass ~/bin in deinem PFAD. Dann hast du Zugriff auf deine variable Global. Dies ist nur ein Beispiel, ich verwende zum kompilieren mein source-code die Bedürfnisse der GOPATH-variable zeigt auf das aktuelle Verzeichnis (vorausgesetzt, Sie sind in dem Verzeichnis, das Sie brauchen, um die Kompilierung der source-code aus):
Aus ~/bin/GOPATH:
Dann tun Sie nur:
So können Sie nun mit $(GOPATH) innerhalb Ihres andere Skripte auch, wie benutzerdefinierte build-Skripte, die automatisch aufrufen, Variablen und erklären Sie es auf die Fliegen Dank $(pwd).
InformationsquelleAutor Casey Comendant
Beantwortung meiner eigenen Frage hier, mit den Antworten: wenn ich mehr als eine variable zu exportieren, die mit den gleichen Wert wie ein Teil von jedem export -, ich kann dies tun:
und speichern unter z.B. ~/Desktop/TEST_EXPORTING
und schließlich
$chmod +x ~/Desktop/TEST_EXPORTING
--
Danach läuft es mit
source ~/Desktop/TEST_EXPORTING bob
und dann die überprüfung mit
export | grep bob
sollte zeigen, was Sie erwarten.InformationsquelleAutor WillC