t\imeou \cd(ou ou "tim"eou 'cd'ou ${-##*}timeou ${-+time}et toutes les autres combinaisons de citations et d'extensions auxquelles vous pourriez penser qui finiraient par se résoudre en timeou cd), c'est que: une autre façon d'écrire cdet time.
Cependant, cela finirait par résoudre cdou timeultérieurement l'analyse syntaxique et l'interprétation de la syntaxe du shell. En particulier, cela se produit longtemps après la reconnaissance des mots clés du shell et la substitution d' alias .
Ainsi, au moment où le shell recherche des mots clés dans sa langue, il ne reconnaît pas ti\mele timemot clé shell. Donc:
ti\me echo test
serait reconnu par le shell comme une simple commande par opposition au timemot - clé suivi d'une simple commande.
Ensuite, le guillemet ti\meserait traité (ici, cette barre oblique inverse cite le mcaractère qui n'a pas besoin d'être cité de toute façon, le caractère guillemet est supprimé, vous obtenez time) et une time commande serait consultée comme toutes les autres commandes (dans la liste des commandes intégrées) , les fonctions et les fichiers exécutables $PATH. Très probablement qui seront /bin/timeici)
Car cd, il n'y a pas de cdmot-clé dans le langage shell, juste une cdcommande intégrée (qui a priorité sur la vôtre /usr/bin/cd). Cependant, si vous définissez un alias pour cd(comme alias cd=pushd), même chose. Comme la substitution d'alias est effectuée très tôt, avant la suppression des guillemets, si vous avez un alias pour cdet pas un pour \cd(notez que peu de shells autorisent les alias avec des barres obliques inverses), puis en écrivant:
\cd dir
vous vous assurez que votre cdalias n'est pas remplacé.
En bref, citant un nom de commande ou une partie de celui - ci l'empêche d'être considéré comme un mot - clé shell (mots - clés étant des choses comme while, for, if, {... timeest un mot - clé dans quelques coquilles seulement), et contournements un alias que vous pouvez avoir pour elle .
Cependant, il ne force pas cette commande à se résoudre en un fichier exécutable $PATH, la commande est toujours recherchée en premier parmi les fonctions (que vous pouvez contourner en faisant command time cmd...) et les commandes intégrées (que vous pouvez contourner en faisant env time cmd..., bien que je ne sache pas un shell qui a une timecommande intégrée ).
Notez que la citation peut également avoir une influence sur le comportement des commandes spéciales de la famille typeset/ declare/ export/ local... dans certains shells. Voir Des devis sont - ils nécessaires pour l'affectation de variable locale? pour plus de détails.