Fish如何防止递归函数调用

Fish how to prevent recursive function calls

在使用具有相同名称的函数覆盖默认二进制文件时,如何防止对 fish 函数的递归函数调用?

例如

# Override 'ls'
function ls
    if [ my_special_condition ]
        * Do special stuff *
    else  # Call regular ls
        ls $argv
    end    
end

显然,上面的代码在没有调用实际 'ls' 二进制文件的情况下以递归循环结束。 有办法解决这个问题吗?

在函数内,使用the command command

function ls
    command ls $argv
end

我了解到您想替换 ls 函数,同时又能调用原始函数。您可以通过 functions -c:

复制函数来做到这一点
functions -c ls orig_ls # copies ls to orig_ls
function ls
    if [ my_special_condition ]
        * Do special stuff *
    else  # Call original ls
        orig_ls $argv
    end    
end