How can I write a function in zsh that invokes an existing command with the same name as the function itself? For example, I've tried this to illustrate my question:

function ls 
    ls -l $1 $2 $3

When I execute it with ls * I get the following:

ls:1: maximum nested function level reached

I assume this is because the function is being called recursively. How I can avoid that?

This is a crude example, and in this case an alias would do the job, but I have a more complex example where an alias isn't suitable and so I would need to write a function.


What is happening is that you are recursively calling your ls function. In order to use the binary, you can use ZSH's command builtin.

function ls {
    command ls -l "$@"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.