代码之家  ›  专栏  ›  技术社区  ›  dar512

在fish中,是否可以用另一个使用相同名称的函数包装现有函数?

  •  1
  • dar512  · 技术社区  · 7 年前

    我想创建一个cd函数,它扩展了(在我的机器上)当前的cd函数 /usr/local/Cellar/fish/2.6.0/share/fish/functions/cd.fish . 这可能吗?

    比如这样:

    function cd
        if i_can_handle_it
            do_my_thing_with $argv
        else
            call /usr/local/Cellar/fish/2.6.0/share/fish/functions/cd.fish $argv
        end
    end
    
    1 回复  |  直到 7 年前
        1
  •  3
  •   Kurtis Rader    7 年前

    不能有两个同名函数。您可以使用相同名称的内置命令、函数命令和外部命令。这个问题的标准解决方案是首先重命名要包装的函数: functions -c cd cd2 . 然后定义您的 cd 调用的函数 cd2 . 请注意,无论是否 cd 已运行并因此定义,因为更改名称首先会导致自动加载。