Entweder ist das, was ich hier frage, extrem unorthodox / unkonventionell / riskant, oder meine Google-Fu-Kenntnisse sind einfach nicht ausreichend für Schnupftabak ...
Gibt es in einem bash
Shell-Skript eine einfache Möglichkeit, festzustellen, ob es von einem anderen Shell-Skript stammt oder von selbst ausgeführt wird? Mit anderen Worten, ist es möglich, zwischen den folgenden beiden Verhaltensweisen zu unterscheiden?
# from another shell script
source myScript.sh
# from command prompt, or another shell script
./myScript.sh
Ich überlege, ein Shell-Skript wie ein Dienstprogramm zu erstellen, das bash
Funktionen enthält, die bei der Beschaffung verfügbar gemacht werden können. Wenn dieses Skript von selbst ausgeführt wird, möchte ich, dass es bestimmte Vorgänge ausführt, die auch auf den definierten Funktionen basieren. Gibt es eine Art Umgebungsvariable, auf die dieses Shell-Skript zugreifen kann, z
some_function() {
# ...
}
if [ -z "$IS_SOURCED" ]; then
some_function;
fi
Am liebsten suche ich eine Lösung, bei der das Aufruferskript keine Flag-Variablen setzen muss.
edit : Ich kenne den Unterschied zwischen dem Sourcing und dem Ausführen des Skripts. Ich versuche hier herauszufinden, ob es möglich ist , den Unterschied im verwendeten Skript zu erkennen (auf beide Arten).
.
Befehl, sondern nach der Feststellung, ob ein Skript stammt oder normal ausgeführt wird (dh in einer Subshell).