あなたが求めていることは、あまり意味がありません。
keywordは、それがシェルの構文の一部である単語であることを意味します。それらはトークン化によって認識されます。それらを引用すれば、シェルが認識を停止するのに十分です。
ただし、ほとんどのシェルでキーワードのエイリアスを作成することは可能です。そのため、エイリアスはキーワードよりも優先されます(実際には、それらは早期に展開され、その後、より多くのエイリアス、キーワードを持つことができるトークン化が行われます)...
エイリアス(で定義されたzshエイリアスを除きalias -g、コマンド位置でのみ展開されます)builtin the-alias。
関数は組み込みコマンドよりも優先され、組み込みコマンドは外部コマンドよりも優先されます(そして、$PATH使用するコマンドを決定します)。
ビルトインを強制するには:
builtin the-cmd and its args
(ただし、これは標準コマンドではないことに注意してください)。
エイリアスを引用符で囲むことで、エイリアスを無効にできます(ただし、一部のシェルでは引用符付きバージョンをエイリアス化することもできます)。
したがって、たとえば(ここではzsh構文)、次の場所にあります。
'while'() echo function while
alias 'while=echo alias while'
書き込むwhile trueと実際に出力されalias while true、whileキーワードを引用するとエイリアスとキーワードの両方が無効になるため、キーワードを使用する方法はありません。
whileたとえば、次の関数を呼び出します。
'whi'le whatever
whileビルトインが存在する場合(ただし、もちろんwhileキーワードを持つシェルには含まれません)、次のように記述します。
builtin while whatever
whileコマンドを呼び出すには、次のように記述します。
env while whatever
またはzsh(shエミュレーションではない場合):
command while whatever
(他のシェルでは、command組み込み関数ではなく関数のみを防止します)
または
/full/path/to/while whatever
もちろん、次のような愚かなことをすることを妨げるものは何もありません。
alias 'while=while "w"hile; do'
"while"() { while "whi"le; done; }
これは、少なくともzshでは有効です(ただし、愚かです)。
command抑制し、関数検索を抑制しますが、どちらも残りの同義語のどれが使用されるかを指定しません。特定のシノニムのみを実行するように指定する方法を探しています。