Invocation du script bash


0

Avoir un script simple:

echo "file: $0"

quand invoqué comme ceci:

bash myscript.sh

ou

./myscript.sh

donne le nom de fichier du script ( file: myscript.sh ) comme prévu mais quand invoqué:

source myscript.sh

ou

. ./myscript.sh

donne le nom du shell ( bash ) au lieu du nom du fichier de script.

Pourquoi est-ce comme ça?

Réponses:


2

Le premier appel lancera une nouvelle instance de bash pour interpréter le script, ce qui signifie que bash définira $0 à son chemin.

Le second appel traitera le fichier comme exécutable et l'exécutera, donc $0 va pointer vers elle.

Les deux derniers appels chargeront le fichier dans l’instance actuelle de bash, donc $0 va pointer là.

NB: le fichier n ° 2 doit être exécutable, les n ° 1, n ° 3 et n ° 4 pas


1
N ° 1 n'a pas besoin que le fichier soit exécutable, seul le n ° 2 en a
Eric Renouf

Lire plus attentivement aurait aidé - merci pour la capture!
Eugen Rieck
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.