Une barre oblique inverse en dehors des guillemets signifie «interpréter le caractère suivant littéralement pendant l'analyse». Depuis .
est un caractère ordinaire pour l'analyseur, \.
est analysé de la même manière que .
, et appelle le builtin .
(dont source
est un synonyme en bash).
Il y a un cas où cela pourrait faire une différence dans ce contexte. Si un utilisateur a défini un alias appelé .
précédemment .profile
, et .profile
est lu dans un shell qui développe les alias (ce que bash ne fait par défaut que lorsqu'il est invoqué de manière interactive), alors .
déclencherait l'alias, mais \.
déclencherait toujours la fonction intégrée, car le shell n'essaye pas l'expansion d'alias sur les mots qui ont été cités de quelque façon que ce soit.
Je soupçonne que cela a .
été changé en \.
car un utilisateur s'est plaint après avoir créé un alias pour .
.
Notez que \.
cela invoquerait une fonction appelée .
. Vraisemblablement, les utilisateurs qui écrivent des fonctions sont plus informés que les utilisateurs qui écrivent des alias et sauraient que la redéfinition d'une commande standard dans .profile
est une mauvaise idée si vous allez inclure du code provenant de tiers. Mais si vous vouliez contourner les alias et les fonctions, vous pourriez écrire command .
. L'auteur de cet extrait n'a pas fait cela soit parce qu'ils se souciaient de coquillages antiques qui n'avaient pas de fonction command
intégrée, ou plus probablement parce qu'ils n'en étaient pas conscients.
Soit dit en passant, définir un alias dans .profile
est une mauvaise idée car il .profile
s'agit d'un script d'initialisation de session , et non d'un script d'initialisation de shell . Les alias de bash appartiennent à .bashrc
.
Gilles 'SO- arrête d'être méchant'
la source