web-dev-qa-db-fra.com

Quelle est la difference entre "source" et "."?

Quelle est la différence entre l’exécution d’un script (par exemple,/some/script) avec source /some/script et . /some/script dans Bash?

147
binW

sourceet . sont synonymes dans Bash .

Pour ceux qui voudraient vérifier que les commandes sont simplement synonymes et rien de plus, regardez code source , disons pour la version 4.3, et examinez le fichier builtins/source.def . Vous lirez que les deux commandes intégrées, sourceNAME _ et . , utilisent la même fonction: source_builtin .

134
user8290

. est synonyme de source dans bash, mais pas dans POSIX sh. Vous devez donc utiliser . si votre script est exécuté par/bin/sh. Notez que bash prétend fonctionner comme POSIX sh lorsqu’il est appelé/bin/sh, mais accepte source sans se plaindre.

Ce comportement m'a mordu, les scripts testés avec bash en tant que/bin/sh échouent lorsqu'ils sont exécutés sous ash, par exemple.

45
jjg