Wie die source-Datei von bash-Skript
Ich versuche, die Quelle eine Datei mit einer Umgebungsvariablen aus meinem bash-Skript, aber es funktioniert nicht.
Dies ist der Inhalt meines scripts (test.sh
), die sich in ~/scripts/test.sh
.
#!/bin/bash
FILE_NAME=/tmp/source_file
touch $FILE_NAME
echo "export TEST=\"test\"" > $FILE_NAME
source $FILE_NAME
Dann benutze ich alias
im my ~/.bashrc
.
alias testScript=~/scripts/test.sh
Aber wenn ich mit meinem script testScript
es nicht, setzen Sie die Umgebungsvariable.
Was meinst du mit "es ist nicht legen Sie die Umgebungsvariable"? Was ist das erwartete Ergebnis?
Wenn ich versuche echo $TEST ich sehe keinen Wert
Hat die Datei
Wenn ich versuche echo $TEST ich sehe keinen Wert
Hat die Datei
/tmp/source_file
enthalten, was Sie erwarten?InformationsquelleAutor franki3xe | 2013-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Environment-Variablen nur flow downstream, in der Prozess-Baum.
Wenn Sie
testScript
zu einer bash-Prozess erzeugt einen Kindprozess und Führungskräfte/bin/bash
oder was auch immer wird durch#!
Alle Umgebungsvariablen gesetzt, es bleiben nur mit der Kind-Prozess. Export bewirkt, dass die Variablen kopiert werden, um zusätzliche Enkelkinder (Kinder, Kind), die möglicherweise durch das Kind.
Nichts kopieren kann, zurück zu einem Elternteil. Sie müssen die Quelldatei verwenden, anstatt die Datei. Siehe Jonathan ' s Antwort.
Könnten Sie versuchen, Bearbeiten Sie die Dateien
~/.bashrc
oder~/.login
zu setzen Umwelt-Variablen, die Sie brauchen Häufig.Siehe auch https://superuser.com/q/153371 und https://superuser.com/questions/18988/difference-between-a-b-and-export-a-b-in-bash weitere Erklärung
export
imbash
.InformationsquelleAutor Paul
Müssen Sie verwenden:
zur Quelle der Datei. Oder Sie können
source
im Ort.
, aber ich weiß nicht wie C-shells also ich glaube nicht, verwenden Sie die C-shell Notationen wiesource
.InformationsquelleAutor Jonathan Leffler
Keiner der anderen Methoden, die für mich gearbeitet [
source /path/to/file
vs. ./path/to/file
, alias, etc...], bis, Dank dieses tutorial ich fand, dass mit der:#!/usr/bin/env bash
Kramstatt der einfacheren
#!/usr/bin/env
man lässt die Argumente, die Weitergabe an die Dolmetscher, die ich denke, ist hier der Schlüssel – siehe dieses Dokument für mehr info.In jedem Fall, wenn Quell-Befehle in jeglicher form sind nicht für Sie arbeiten, versuchen Sie, Ihre shebang, das könnte das problem sein 🙂
InformationsquelleAutor Nikksno