Question Quelle est la différence entre “source” et “.”?


Quelle est la différence entre exécuter un script (par exemple / some / script) avec source /some/script et . /some/script à Bash?


136
2018-02-09 17:18


origine




Réponses:


source et . sont synonymes Frapper.

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


123
2018-02-09 17:26



où est-ce défini? Je veux dire est un alias pour la source ou est-ce quelque chose d'autre? - binW
exactement la même chose
@binW: . est la commande source traditionnelle, héritée de l'ancien shell Bourne. source est juste un bash builtin qui fait exactement la même chose que ., probablement parce que c'est plus lisible (un . seul peut-être difficile à repérer avec une petite police). Tu verras help source et help . affiche la même information. - geirha
@binW: Si vous regardez dans man bash et ensuite rechercher source vous verrez ça source filename [arguments] est un synonyme de . filename [arguments]. - Matthew Rankin
Cela contredit en fait ce que je vois dans cette question: askubuntu.com/questions/182012/… - ysap


. est synonyme de source dans bash, mais pas dans POSIX sh, donc vous devriez utiliser . si votre script est exécuté par / bin / sh. Notez que bash prétend fonctionner comme POSIX sh lorsqu'il est appelé comme / bin / sh, mais accepte source sans plainte.

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


41
2018-02-09 20:42



POSIX ne limite pas le shell. POSIX dit juste; le shell supportera au moins ceci et cette fonctionnalité. Ainsi, un shell POSIX est libre d'implémenter des fonctionnalités supplémentaires tant que celles décrites par POSIX sont implémentées. Quand le shebang dit #!/bin/sh vous ne devriez jamais supposer que le shell supporte tout sauf des fonctionnalités POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/… - geirha
Vous pouvez être affecté par l'ordre de recherche des noms: unix.stackexchange.com/q/17815/8250 - Lekensteyn
Cette réponse m'a aidé, puisque sh est souvent utilisé dans cron. - dfrankow