Le script a commencé comme `source` ou` executable`?

Pouvons-nous déterminer à l'intérieur du script s'il a commencé comme source (.) Ou executable (shebang ou quelque chose de semblable)?

Test sur $0 si vous avez un script:

 #!/bin/bash echo $0 

et le rendre exécutable ( chmod 755 test.sh ) et faire:

 source test.sh 

vous obtenez bash (ou quelque chose d'autre en fonction de la façon dont vous êtes connecté et ce que votre shell est).

Si tu fais

 ./test.sh 

vous obtenez ./test.sh , donc en supposant que le script sache comment il est sauvegardé sur le disque, vous devriez faire:

 if [ $(basename "$0") == "test.sh" ] then ..... your code here for non-sourced else ..... your code here for sourced fi