oh-my-zsh:git 达到最大嵌套函数级别
oh-my-zsh: git maximum nested function level reached
使用标准 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 功能移动到 zsh:
gr() {
git rebase -i HEAD~
}
解决方案:
function gr() {
git rebase -i HEAD~
}
我用不同的命令 (export
) 遇到了同样的错误,这是由意外的递归函数定义引起的。我可以通过删除不需要的功能来解决问题:
unset -f export
我有同样的问题,使用不同的命令: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 for "source file", cf. POSIX spec“点描述”)
这与原问题有什么关系?
这些问题看起来很相似:一个 git 调用调用一个 git alias/function 调用它的调用者 ...
omz的git plugging,添加一长串git别名,其中有
alias gr='git remote' # line 246
在 git branch 调用后可能与 OP 自定义函数有一些冲突(但我不知道如何)
- 就我而言,接受的解决方案不起作用
添加可选的 (cf. zsh doc) function
标识符,不会阻止函数体内的别名调用(默认情况下)。这导致递归问题,抛出“达到最大嵌套函数级别;”错误
- 可以*在 bash 和 zsh 之间共享自定义函数,方法是将它们放在一个单独的点文件中,然后从相应的 rc 文件中获取它
或者
您可以unset
或删除更改,如bluenote10中所述
使用标准 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 功能移动到 zsh:
gr() {
git rebase -i HEAD~
}
解决方案:
function gr() {
git rebase -i HEAD~
}
我用不同的命令 (export
) 遇到了同样的错误,这是由意外的递归函数定义引起的。我可以通过删除不需要的功能来解决问题:
unset -f export
我有同样的问题,使用不同的命令: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 for "source file", cf. POSIX spec“点描述”)
这与原问题有什么关系?
这些问题看起来很相似:一个 git 调用调用一个 git alias/function 调用它的调用者 ...
omz的git plugging,添加一长串git别名,其中有
alias gr='git remote' # line 246
在 git branch 调用后可能与 OP 自定义函数有一些冲突(但我不知道如何)
- 就我而言,接受的解决方案不起作用
添加可选的 (cf. zsh doc) function
标识符,不会阻止函数体内的别名调用(默认情况下)。这导致递归问题,抛出“达到最大嵌套函数级别;”错误
- 可以*在 bash 和 zsh 之间共享自定义函数,方法是将它们放在一个单独的点文件中,然后从相应的 rc 文件中获取它
或者
您可以unset
或删除更改,如bluenote10中所述