t\imeo \cd(o "tim"eo 'cd'o ${-##*}timeoe ${-+time}ogni altra combinazione di quotazioni ed espansioni che potresti pensare che alla fine si risolveranno in timeo cd), è quella: un altro modo di scrivere cde time.
Tuttavia, ciò alla fine si risolverebbe cdo timein un momento successivo dell'analisi e dell'interpretazione della sintassi della shell. In particolare, ciò avviene molto tempo dopo il riconoscimento shell parola e alias sostituzione avvengono.
Quindi, nel momento in cui la shell cerca parole chiave nella sua lingua, non la riconosce ti\mecome timeparola chiave shell. Quindi a:
ti\me echo test
sarebbe riconosciuto dalla shell come un semplice comando in contrapposizione alla timeparola chiave seguita da un semplice comando.
Quindi la quotazione ti\meverrà elaborata (qui che la barra rovesciata sta citando il mcarattere che non ha bisogno di quotare comunque, il carattere di quotatura viene rimosso, ottieni time) e un time comando verrebbe cercato come qualsiasi altro comando (nell'elenco dei builtin , funzioni e file eseguibili in $PATH. Molto probabilmente quello sarà /bin/timequi)
Per cd, non c'è una cdparola chiave nel linguaggio shell, solo un cdcomando incorporato (che ha la precedenza sul tuo /usr/bin/cd). Tuttavia, se si definisce un alias per cd(like alias cd=pushd), lo stesso di nuovo. Poiché la sostituzione dell'alias viene eseguita molto presto, prima della rimozione delle virgolette, se si dispone di un alias per cde non per uno \cd(si noti che non molte shell consentono alias con barre rovesciate), quindi scrivendo:
\cd dir
stai assicurando che il tuo cdalias non venga sostituito.
In breve, citando un nome di comando o di parte di esso impedisce di essere visto come parola chiave shell (parole chiave essendo cose come while, for, if, {... timeè una parola chiave in alcuni solo conchiglie), e ignora un alias si può avere per essa .
Non impone tuttavia che il comando si risolva in un file eseguibile $PATH, il comando viene comunque cercato prima tra le funzioni (che puoi aggirare facendo command time cmd...) e i builtin (che puoi aggirare facendo env time cmd..., anche se non so di una shell che ha un timecomando incorporato ).
Si noti che la citazione può anche influenzare il comportamento dei builtin speciali della famiglia typeset/ declare/ export/ local... in alcune shell. Vedi Le virgolette sono necessarie per l'assegnazione delle variabili locali? per dettagli.