【问题标题】:oh-my-zsh: git maximum nested function level reachedoh-my-zsh:达到 git 最大嵌套函数级别
【发布时间】:2017-08-06 22:52:59
【问题描述】:

使用标准 git 命令时出现错误:

[~/site]$ git branch
git:1: maximum nested function level reached

.zshrc:

plugins=(git osx colored-man gem brew go bundler rake rails)
source $ZSH/oh-my-zsh.sh

【问题讨论】:

    标签: bash shell terminal zsh oh-my-zsh


    【解决方案1】:

    我的错,我把 bash 函数移到了 zsh:

    gr() {
      git rebase -i HEAD~$1
    }
    

    解决方案:

    function gr() {
      git rebase -i HEAD~$1
    }
    

    【讨论】:

    • 你是否持有 FunCoin?它实际上是我所拥有的。
    【解决方案2】:

    我在使用不同的命令 (export) 时遇到了同样的错误,这是由意外的递归函数定义引起的。我可以通过删除不需要的功能来解决问题:

    unset -f export
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,但使用了不同的命令:find

      TL;DR

      不要在函数脚本中调用函数的别名。


      错误

      $ find ~ -name some_thing
      find_no_err:1: maximum nested function level reached; increase FUNCNEST?
      

      问题

      • 我创建了一个函数 f (find_no_err),它使用命令 c (find)
      • 然后,定义一个将命令与函数关联的别名,如下所示
      alias c=f
      
      • 所以我最终得到了一个没有停止条件的复活:
      # the recursion issue
      c=f(c)
      

      解决方案

      避免调用函数或在其脚本中调用给定函数的命令的别名

      或者,在c=f(c)的情况下,不要调用c表单f

      改为使用以下 3 个选项之一:

      • 使用命令的相对路径(例如cmd
        ./cmd
      
      • 使用命令的完整路径
        # to get it, in linux systems, use
        whereis cmd
      
      • 在函数脚本中引用命令调用
        'cmd'
      

      在实践中

      我只是在函数体内引用了 find 调用

      find_no_err(){
        'find' $* 2>/dev/null
      }
      

      然后获取文件(参见“源文件”zsh doc,“点描述”参见POSIX spec

      这与原来的问题有什么关系?

      1. 问题看起来很相似:一个 git 调用调用一个调用其调用者的 git 别名/函数...

      2. omz的git plugging,添加一长串git别名,其中有

      alias gr='git remote' # line 246
      

      git branch 调用后可能与 OP 自定义函数有冲突(但我不知道如何)

      1. 就我而言,接受的解决方案不起作用

      添加可选的(参见zsh docfunction 标识符,不会阻止函数体内的别名调用(默认情况下)。这会导致递归问题,这会引发“达到最大嵌套函数级别;”错误

      1. 可以* 在 bash 和 zsh 之间共享自定义函数,方法是将它们放在单独的 dotfile 中,然后从相应的 rc 文件中获取它

      或者

      您可以unset 或删除更改,如 bluenote10 answer

      中所述

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-03
        相关资源
        最近更新 更多