「:」という関数を定義するときにこの動作が発生する原因は何ですか?

「:」という関数を定義するときにこの動作が発生する原因は何ですか?

次の関数を作成すると

function :() {
  echo "hi"
}

その後、文字を入力するたびに関数が実行されます。入力しながらをクリックする前にreturn

これは私の体に何かがある.zshrcのでそうです。いいえZシェルを起動するとこれが発生しますzsh -fが、Bashでは発生しません。

この奇妙な動作の原因をどうやって知ることができますか?

ベストアンサー1

組み込み関数は何も:しません。アクションなし)。 zshの完成コードを含むいくつかの場所で使用されます。キーバインディングに関連するいくつかのコードで使用される可能性が高いです。関数でそれをオーバーライドすると、関数が複数回呼び出されることが期待されます。

標準コマンド名をまったく異なる名前で上書きすることはお勧めできません。しかし、自分自身を定義したい場合は、:エイリアス(より長くより明確な名前を持つ関数)で作成してください。autoloadこれは、完了コードを含む自動ロードされた関数-Uに影響を与えませんautoload-U

おすすめ記事