Feststellen, ob Datei gesourced wird

30/09/2008 - 13:00 von Michael Schmarck | Report spam
Hi.

Ich habe eine "Bibliotheksdatei" in der ich einige Shell Funktionen
(für Bash) sammele. Um diese in Scripts zu nutzen, source ich
das dann:

. lib/functions.sh

Nun würde ich gerne einen "hilfreichen" Hinweis ausgeben, falls
die Datei dochmal direkt ausgeführt wird. Wenn also gemacht wird:

lib/functions.sh

Dazu dachte ich, das ich in die Datei einfach ein paar echos setze.
Aber diese echos werden natürlich auch ausgeführt, wenn die
Datei "gesourced" (gibt's dafür eigentlich auch einen deutschen
Ausdruck?) wird.

Das soll nicht sein.

Wie làsst sich in einem Script feststellen, ob das Script gesourced
wurde oder normal ausgeführt wurde? Reicht's dafür (bei bash)
SHLVL zu überprüfen? SHLVL wird ja um 1 erhöht, wenn das Script
mit "bash lib/functions.sh" ausgeführt wird. Aber zum einen scheint
das nur bei der bash so zu sein (und nicht bei ksh von Solaris 10),
und zum anderen müsste ich wissen, ob's erhöht wurde; ich müsste
also den alten Wert kennen.

Das ist's also nicht :)

Irgendwer 'ne Idee?

Wàre toll wenn's mit bash und ksh (von Solaris 10) klappen würde.

Danke sehr,

Michael
 

Lesen sie die antworten

#1 Sven Joachim
30/09/2008 - 13:11 | Warnen spam
Am 30.09.2008 um 13:00 schrieb Michael Schmarck:

Ich habe eine "Bibliotheksdatei" in der ich einige Shell Funktionen
(für Bash) sammele. Um diese in Scripts zu nutzen, source ich
das dann:

. lib/functions.sh

Nun würde ich gerne einen "hilfreichen" Hinweis ausgeben, falls
die Datei dochmal direkt ausgeführt wird. Wenn also gemacht wird:

lib/functions.sh



Falls du das nicht willst, wàre es doch am einfachsten, der Datei die
Ausführungsrechte zu entziehen. Oder?

Sven

Ähnliche fragen