t\ime
або \cd
(або "tim"e
або 'cd'
або ${-##*}time
або ${-+time}
та будь-яка інша комбінація цитування та розширень, про яку ви могли б подумати, що врешті-решт може вирішитись time
або cd
), це: інший спосіб написання cd
та time
.
Однак це врешті-решт вирішиться до cd
чи time
пізнішого розбору та інтерпретації синтаксису оболонки. Зокрема, це відбувається задовго після того, як відбудеться розпізнавання ключових слів оболонки та заміна псевдоніму .
Отже, на той час, коли оболонка шукає ключові слова на своїй мові, вона не розпізнається ti\me
як time
ключове слово оболонки. Отже:
ti\me echo test
оболонка буде розпізнана як проста команда на відміну від time
ключового слова, за яким просте команда.
Тоді цитування в ti\me
оброблятиметься (тут на зворотному косому котирується m
символ, котрий не потребує цитування, символ цитування видаляється, ви отримуєте time
), і time
команда буде шукатись, як і будь-які інші команди (у списку вбудованих , функції та виконувані файли в $PATH
. Швидше за все, це буде /bin/time
тут)
Бо в мові оболонки cd
немає cd
ключового слова, а лише cd
вбудована команда (яка має перевагу над вашою /usr/bin/cd
). Однак, якщо ви визначите псевдонім для cd
(like alias cd=pushd
), знову ж. Оскільки заміна псевдоніму робиться дуже рано, перед тим, як вилучити цитати, якщо у вас є псевдонім для, cd
а не один \cd
(зауважте, що не багато оболонок дозволяють псевдоніми з косою косою рисою), то написавши:
\cd dir
ви переконайтеся, що ваш cd
псевдонім не замінений.
Коротше кажучи, з посиланням на ім'я команди або яку - або його частину НЕ заважає йому бути розглядаються в якості ключового слова оболонки (ключових слів бути речі , як while
, for
, if
, {
... time
це ключове слово в деяких тільки оболонках), і обходять псевдонім , ви можете мати для нього .
Однак це не примушує цю команду вирішувати виконуваний файл в $PATH
, команда все ще шукається першою серед функцій (якими можна обійтися, виконуючи завдання command time cmd...
) та вбудованими (якими ви можете займатися env time cmd...
, виконуючи , хоча я не знаю оболонка, яка має вбудовану time
команду).
Зверніть увагу , що квотування може також впливати на поведінку спеціальних вбудованих команд в typeset
/ declare
/ export
/ local
... сім'ї в деяких оболонках. Див. Чи потрібні лапки для призначення місцевих змінних? для деталей.