関数自体と同じ名前の既存のコマンドを呼び出す関数をzsh
に作成するにはどうすればよいですか?たとえば、私は私の質問を説明するためにこれを試しました:
function ls
{
ls -l $1 $2 $3
}
ls *
で実行すると、次のようになります。
ls:1: maximum nested function level reached
これは、関数が再帰的に呼び出されているためだと思います。どうすればそれを回避できますか?
これは大まかな例であり、この場合はエイリアスが機能しますが、エイリアスが適切でないというより複雑な例があるため、関数を作成する必要があります。
何が起こっているのかというと、ls
関数を再帰的に呼び出しているということです。バイナリを使用するには、ZSHのcommand
ビルトインを使用できます。
function ls {
command ls -l "$@"
}