Mit der source
Anweisung kannst du Befehle aus einer angegebenen Datei in der aktuellen Shell-Umgebung lesen und ausführen. Dies ist praktisch, um Funktionen, Variablen und Konfigurationsdateien in Shell-Skripten zu importieren.
Die source
Anweisung ist eine Shell-Funktion, die in Bash und anderen gängigen Shells unter Linux und UNIX-Betriebssystemen integriert ist. Ihr Verhalten kann zwischen verschiedenen Shells variieren.
Source-Anweisungssyntax
Die Syntax der source
Anweisung sieht folgendermaßen aus:
source DATEINAME [ARGUMENTE]
. DATEINAME [ARGUMENTE]
source
und.
(ein Punkt) sind der gleiche Befehl.- Wenn
DATEINAME
kein absoluter Pfad ist, sucht die Anweisung nach der Datei in den Verzeichnissen, die in der Umgebungsvariablen$PATH
aufgelistet sind. Kann die Datei im$PATH
nicht gefunden werden, wird im aktuellen Verzeichnis gesucht. - Werden
ARGUMENTE
angegeben, werden sie zu Positionsparametern für denDATEINAME
. - Existiert der
DATEINAME
, ist der Exit-Code dersource
Anweisung0
. Wird die Datei nicht gefunden, wird1
zurückgegeben.
Beispiele für die Anweisung source
In diesem Abschnitt betrachten wir einige grundlegende Beispiele für die Verwendung der source
Anweisung.
Source-Funktionen
Wenn du Shell-Skripte hast, die dieselben Funktionen nutzen, kannst du diese in eine separate Datei auslagern und diese Datei dann in deinen Skripten mithilfe von source
einbinden.
In diesem Beispiel erstellen wir eine Datei mit einer Bash-Funktion, die überprüft, ob der Benutzer, der das Skript ausführt, der Root-Benutzer ist. Ist dies nicht der Fall, wird eine Nachricht angezeigt und das Skript beendet.
functions.sh
check_root () {
if [[ $EUID -ne 0 ]]]; then
echo "Du musst dieses Skript als root ausführen"
exit 1
fi
}
Nun musst du in jedem Skript, das nur vom Root-Benutzer ausgeführt werden soll, einfach die Datei functions.sh
einbinden und die Funktion aufrufen:
#!/usr/bin/env bash
source functions.sh
check_root
echo "Ich bin root"
Führst du das obige Skript als Nicht-Root-Benutzer aus, wird die Meldung „Du musst dieses Skript als root ausführen“ ausgegeben und das Skript beendet.
Der Vorteil dieses Ansatzes besteht darin, dass deine Skripte übersichtlicher und besser lesbar sind, du die gleiche Funktionsdatei mehrfach verwenden kannst und bei Änderungen an einer Funktion nur eine Datei bearbeiten musst.
Bash Konfigurationsdatei
Mit der source
Anweisung kannst du auch Variablen aus einer Datei einlesen. Die Variablen müssen im Bash-Format VARIABLE=WERT
gesetzt werden.
Erstellen wir eine Beispiel-Konfigurationsdatei:
config.sh
VAR1="foo"
VAR2="bar"
Verwende in deinem Bash-Skript die source
Anweisung, um die Konfigurationsdatei einzulesen:
#!/usr/bin/env bash
source config.sh
echo "VAR1 ist $VAR1"
echo "VAR2 ist $VAR2"
Wenn du das Skript ausführst, sieht die Ausgabe wie folgt aus:
VAR1 ist foo
VAR2 ist bar
Fazit
In dieser Anleitung hast du gelernt, wie du die integrierte Anweisung source
in deinen Shell-Skripten einsetzen kannst.
Wenn du Fragen oder Anregungen hast, zögere nicht, einen Kommentar zu hinterlassen.