Soit ce que je demande ici est extrêmement peu orthodoxe / non conventionnel / risqué, soit mes compétences Google-fu ne sont tout simplement pas à la hauteur ...
Dans un bash
script shell, y a-t-il un moyen simple de dire s'il provient d'un autre script shell ou s'il est exécuté par lui-même? En d'autres termes, est-il possible de différencier les deux comportements suivants?
# from another shell script
source myScript.sh
# from command prompt, or another shell script
./myScript.sh
Ce que je pense faire, c'est de créer un script shell de type utilitaire contenant des bash
fonctions qui peuvent être rendues disponibles une fois sourcées. Lorsque ce script est exécuté par lui-même, j'aime qu'il effectue également certaines opérations, en fonction des fonctions définies. Existe-t-il une sorte de variable d'environnement sur laquelle ce script shell peut s'appuyer, par exemple
some_function() {
# ...
}
if [ -z "$IS_SOURCED" ]; then
some_function;
fi
De préférence, je recherche une solution qui ne nécessite pas le script d'appelant pour définir des variables d'indicateur.
edit : Je connais la différence entre l'approvisionnement et l'exécution du script, ce que j'essaie de découvrir ici s'il est possible de faire la différence dans le script utilisé (dans les deux sens).
.
commande, mais sur la détection si un script a été généré ou exécuté normalement (c'est-à-dire dans un sous-shell).