t\ime
atau \cd
(atau "tim"e
atau 'cd'
atau ${-##*}time
atau ${-+time}
dan setiap kombinasi lain dari mengutip dan ekspansi Anda bisa memikirkan yang akhirnya akan memutuskan untuk time
atau cd
), adalah bahwa: cara lain untuk menulis cd
dan time
.
Namun, itu akhirnya akan menyelesaikan cd
atau time
di kemudian hari parsing dan interpretasi sintaksis shell. Secara khusus, itu terjadi lama setelah pengenalan kata kunci shell dan penggantian alias terjadi.
Jadi, pada saat shell adalah mencari kata kunci dalam bahasa, ia tidak mengakui ti\me
sebagai time
kata kunci shell. Jadi a:
ti\me echo test
akan dikenali oleh shell sebagai perintah sederhana sebagai lawan dari time
kata kunci diikuti oleh perintah sederhana.
Maka tanda kutip ti\me
akan diproses (di sini backslash mengutip m
karakter yang tidak perlu kutip, karakter kutip dihapus, Anda dapatkan time
) dan time
perintah akan dicari seperti perintah lain (dalam daftar builtin , fungsi dan file yang dapat dieksekusi $PATH
. Kemungkinan besar akan ada di /bin/time
sini)
Sebab cd
, tidak ada cd
kata kunci dalam bahasa shell, hanya cd
perintah builtin (yang lebih diutamakan daripada Anda /usr/bin/cd
). Namun, jika Anda mendefinisikan alias untuk cd
(suka alias cd=pushd
), sama lagi. Sebagai pengganti alias dilakukan sangat awal, sebelum penghapusan kutipan, jika Anda memiliki alias untuk cd
dan bukan untuk \cd
(perhatikan bahwa tidak banyak shell mengizinkan alias dengan backslash di dalamnya), kemudian dengan menulis:
\cd dir
Anda memastikan cd
alias Anda tidak diganti.
Singkatnya, mengutip nama perintah atau bagian dari itu mencegah dari yang dilihat sebagai kata kunci shell (kata kunci menjadi hal-hal seperti while
, for
, if
, {
... time
adalah kata kunci di beberapa kerang saja), dan melewati alias Anda mungkin memiliki untuk itu .
Namun itu tidak memaksa perintah untuk menyelesaikan file yang dapat dieksekusi $PATH
, perintah masih dicari pertama di antara fungsi (yang dapat Anda kerjakan dengan melakukan command time cmd...
) dan builtins (yang dapat Anda kerjakan dengan melakukan env time cmd...
, meskipun saya tidak tahu tentang sebuah shell yang memiliki time
perintah builtin ).
Perhatikan bahwa mengutip juga dapat memiliki pengaruh pada perilaku builtin khusus dari typeset
/ declare
/ export
/ local
... keluarga di beberapa kerang. Lihat Apakah kutipan diperlukan untuk penugasan variabel lokal? untuk detail.