Zkoušeli jste někdy spouštět skript z jiného umístění než kde se skutečně nalézá? Jestli ano, tak jste si určitě všimli že pokud načítáte konfigurační soubor, musíte používat absolutní cestu.
Jenže co když skript chcete dát k dispozici někomu jinému, který se třeba v bashi vůbec nevyzná a musel by znovu nastavovat cesty.
Já jsem to vyřešil takto:
$(cd $(dirname $0) && pwd)
No a rovnou si to ukážeme na příkladu:
Soubor example.sh
#!/bin/bash
CONFIGFILE="$(cd $(dirname $0) && pwd)/config.ini"
if [ -f "$CONFIGFILE" ]
then
# Nacteni configu
source $CONFIGFILE
else
echo "ERROR: Nemuzu nalezt "$CONFIGFILE""; exit
fi
Soubor config.ini
echo "Ahoj, ja jsem config.ini"
Tento příklad se vám bude hodit pokud skripty spouštíte třeba přes cron.