Schlagwort-Archive: Bash

Bash und source

Vor kurzem hatten ein Kollege und ich mit einem seltsamen Phänomen in einem Bash-Skript zu kämpfen.

Wir hatten zwei Skripte skript.sh und konfig.sh.

skript.sh:

#!/bin/bash
variable="abc"
if [ -e konfig.sh ]
then
    source konfig.sh
fi

konfig.sh:

#!/bin/bash
variable="def"

Als wir aber nun skript.sh ausführten, hatte die Variable variable aber den Wert xyz.

Nach einigem Rumprobieren und Investigieren stellte sich heraus, dass es auf dem System noch eine zweite Datei mit dem Namen konfig.sh gab – und zwar in einem Verzeichnis, das in der PATH-Variable enthalten war.

Der source-Befehl schaut zuerst in den Verzeichnissen der PATH-Variable nach der Datei konfig.sh. bevor es im lokalen Verzeichnis sucht. Weil aber konfig.sh nicht als ausführbar markiert war, konnte man es nicht per which finden, was die Problemfindung etwas erschwerte.

Die Konsequenz war, das skript.sh wie folgt zu ändern:

#!/bin/bash
variable="abc"
if [ -e ./konfig.sh ]
then
    source ./konfig.sh
fi