Was Sie fragen, macht nicht wirklich viel Sinn.
Schlüsselwort bedeutet, dass es ein Wort ist, das Teil der Syntax der Shell ist. Diese werden durch Tokenisierung erkannt. Das Zitieren reicht aus, damit die Shell nicht mehr erkennt.
Es ist jedoch in den meisten Shells möglich, ein Schlüsselwort zu aliasen. Aliase haben also Vorrang vor Keywords (in der Tat werden sie frühzeitig erweitert, und danach gibt es mehr Tokenisierung, bei der Sie mehr Aliase und Keywords haben können) ...
Aliase (mit Ausnahme der mit definierten zsh-Aliase alias -gwerden nur in der Befehlsposition erweitert), also normalerweise nicht in builtin the-alias.
Funktionen haben Vorrang vor integrierten Funktionen und integrierten Funktionen vor externen Befehlen (und $PATHentscheiden dann , welche verwendet werden sollen).
Sie können das Builtin erzwingen mit:
builtin the-cmd and its args
(obwohl es angemerkt werden sollte, ist es kein Standardbefehl).
Sie können Aliase deaktivieren, indem Sie sie in Anführungszeichen setzen (obwohl die angegebene Version in einigen Shells auch mit Alias versehen sein kann).
So zum Beispiel (hier zsh-Syntax) in:
'while'() echo function while
alias 'while=echo alias while'
Das Schreiben while truewürde tatsächlich ausgegeben alias while true, und es gäbe keine Möglichkeit, das whileSchlüsselwort zu verwenden, da durch das Zitieren sowohl der Alias als auch das Schlüsselwort deaktiviert würden.
Sie würden die whileFunktion zum Beispiel aufrufen mit:
'whi'le whatever
Wenn es einen whileeingebauten Code geben würde (aber der würde natürlich nicht in den Shells enthalten sein, die ein whileSchlüsselwort enthalten), würden Sie ihn schreiben:
builtin while whatever
Und um den whileBefehl aufzurufen , schreiben Sie:
env while whatever
oder in zsh(wenn nicht in shEmulation):
command while whatever
( commandVerhindert in anderen Shells nur Funktionen, keine eingebauten)
Oder
/full/path/to/while whatever
Natürlich hindert Sie nichts daran, noch albernere Dinge zu tun wie:
alias 'while=while "w"hile; do'
"while"() { while "whi"le; done; }
Was zumindest in zsh gültig ist (aber doof).
commanddie Funktionssuche, aber keines davon gibt an, welches der verbleibenden Synonyme verwendet wird. Ich suche nach einer Möglichkeit, anzugeben, dass nur ein bestimmtes Synonym ausgeführt werden soll.