Existe-t-il un moyen pour un source script shell pour trouver le chemin vers lui-même ? Je suis principalement concerné par bash, même si j'ai des collègues qui utilisent tcsh.
Je suppose que je n'ai peut-être pas beaucoup de chance ici, car le sourcing provoque l'exécution des commandes dans le shell actuel, donc $0
est toujours l'invocation du shell actuel, pas le script source. Ma meilleure idée actuellement est de faire source $script $script
, de sorte que le premier paramètre positionnel contienne les informations nécessaires. Quelqu'un a un meilleur moyen ?
Pour être clair, je suis source le script, sans l'exécuter :
source foo.bash
Réponse acceptée :
Dans tcsh
, $_
au début du script contiendra l'emplacement si le fichier a été sourcé et $0
le contient s'il a été exécuté.
#!/bin/tcsh
set sourced=($_)
if ("$sourced" != "") then
echo "sourced $sourced[2]"
endif
if ("$0" != "tcsh") then
echo "run $0"
endif
Dans Bash :
#!/bin/bash
[[ $0 != $BASH_SOURCE ]] && echo "Script is being sourced" || echo "Script is being run"