Apa yang Anda tanyakan sebenarnya tidak masuk akal.
kata kunci berarti kata yang merupakan bagian dari sintaksis shell. Itu dikenali melalui tokenising. Mengutipnya sudah cukup bagi shell untuk berhenti mengenali.
Dimungkinkan untuk alias kata kunci di sebagian besar shell. Jadi, alias lebih diutamakan daripada kata kunci (pada dasarnya kata tersebut diperluas lebih awal, dan ada lebih banyak tokenising setelah itu di mana Anda dapat memiliki lebih banyak alias, kata kunci) ...
alias (dengan pengecualian alias zsh yang didefinisikan dengan alias -ghanya diperluas dalam posisi perintah), jadi biasanya tidak dalam builtin the-alias.
fungsi memiliki prioritas di atas builtin, dan builtin di atas perintah eksternal (dan kemudian $PATHmemutuskan mana yang akan digunakan).
Anda dapat memaksa builtin dengan:
builtin the-cmd and its args
(meskipun harus dicatat itu bukan perintah standar).
Anda dapat menonaktifkan alias dengan mengutipnya (meskipun versi yang dikutip juga bisa dibuat dalam beberapa shell).
Jadi, misalnya (di sini sintaks zsh), di:
'while'() echo function while
alias 'while=echo alias while'
Menulis while truesebenarnya akan menghasilkan alias while true, dan tidak akan ada cara untuk menggunakan whilekata kunci karena mengutip itu akan menonaktifkan alias dan kata kunci.
Anda akan memanggil whilefungsi dengan misalnya:
'whi'le whatever
Jika ada whilebuiltin (tapi tentu saja mereka tidak akan ada di shell yang memiliki whilekata kunci), Anda akan menulisnya:
builtin while whatever
Dan untuk memanggil whileperintah, Anda akan menulis:
env while whatever
atau dalam zsh(saat tidak dalam shpersaingan):
command while whatever
(di shell lain, commandhanya mencegah fungsi, bukan bawaan)
Atau
/full/path/to/while whatever
Tentu saja, tidak ada yang menghentikan Anda dari melakukan hal-hal yang lebih konyol seperti:
alias 'while=while "w"hile; do'
"while"() { while "whi"le; done; }
Yang, setidaknya dalam zsh valid (tapi bodoh).
commandmenekan pencarian fungsi, tetapi tak satu pun dari ini menentukan mana dari sinonim yang tersisa akan digunakan. Saya mencari cara untuk menentukan untuk mengeksekusi hanya sinonim tertentu .