1. Startseite
  2. Bash Skript
  3. Bash source Anweisung

Bash source Anweisung

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 den DATEINAME.
  • Existiert der DATEINAME, ist der Exit-Code der source Anweisung 0. Wird die Datei nicht gefunden, wird 1 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.

War dieser Beitrag hilfreich?

Verwandte Beiträge