Ce que vous demandez n'a pas vraiment de sens.
mot-clé signifie que c'est un mot qui fait partie de la syntaxe du shell. Ceux-ci sont reconnus par la tokenisation. Les citer suffit pour que le shell cesse de reconnaître.
Il est cependant possible d'alias un mot-clé dans la plupart des shells. Ainsi, les alias ont priorité sur les mots clés (en fait, ils sont développés tôt, et il y a plus de tokenisation après cela où vous pouvez avoir plus d'alias, de mots clés) ...
alias (à l'exception des alias zsh définis avec alias -gne sont développés qu'en position de commande), donc généralement pas dans builtin the-alias.
les fonctions ont la priorité sur les commandes intégrées et les commandes intégrées sur les commandes externes (puis $PATHdécident laquelle utiliser).
Vous pouvez forcer l'intégration avec:
builtin the-cmd and its args
(même s'il faut noter que ce n'est pas une commande standard).
Vous pouvez désactiver les alias en les citant (bien que la version citée puisse également être aliasée dans certains shells).
Ainsi, par exemple (ici la syntaxe zsh), dans:
'while'() echo function while
alias 'while=echo alias while'
L'écriture while trueproduirait en fait alias while true, et il n'y aurait aucun moyen d'utiliser le whilemot - clé car le citer désactiverait à la fois l'alias et le mot-clé.
Vous appelleriez la whilefonction avec par exemple:
'whi'le whatever
S'il y avait une fonction whileintégrée (mais bien sûr, elle ne le serait pas dans les shells qui ont un whilemot - clé), vous l'écririez:
builtin while whatever
Et pour appeler la whilecommande, vous écririez:
env while whatever
ou dans zsh(lorsqu'il n'est pas en shémulation):
command while whatever
(dans d'autres shells, commandempêche uniquement les fonctions, pas les fonctions intégrées)
Ou
/full/path/to/while whatever
Bien sûr, rien ne vous empêche de faire des choses encore plus stupides comme:
alias 'while=while "w"hile; do'
"while"() { while "whi"le; done; }
Ce qui, au moins en zsh est valide (mais stupide).
commandsupprime la recherche de fonction, mais aucune de celles-ci ne spécifie lequel des synonymes restants sera utilisé. Je cherche un moyen de spécifier d'exécuter uniquement un synonyme spécifique .