如何在shell函数中绕过递归函数定义?

如何在shell函数中绕过递归函数定义?,shell,zsh,Shell,Zsh,我想在我的.zshrc中添加如下函数: rg() { rg "$@" --pretty less -XFRS ;} 问题是,这会在调用时导致无限循环 我认为单引用命令名('rg'--pretty…)绕过了本地定义的函数和别名;但出于某种原因,这未能阻止无限循环 我可以用一个绝对路径来实现这一点 rg() { /usr/local/bin/rg "$@" --pretty less -XFRS ;} …但我不想丢失程序的$PATH-分辨率;我只想绕过该函数。您可以使用命令内置: rg() {

我想在我的
.zshrc
中添加如下函数:

rg() { rg "$@" --pretty less -XFRS ;}
问题是,这会在调用时导致无限循环

我认为单引用命令名(
'rg'--pretty…
)绕过了本地定义的函数和别名;但出于某种原因,这未能阻止无限循环

我可以用一个绝对路径来实现这一点

rg() { /usr/local/bin/rg "$@" --pretty less -XFRS ;}

…但我不想丢失程序的
$PATH
-分辨率;我只想绕过该函数。

您可以使用
命令
内置:

rg() { command rg "$@" --pretty less -XFRS ;}

这将运行给定的
命令
,使用
ARGS
抑制shell函数查找,或显示有关指定命令的信息。

请注意,这实际上可能是别名的一个用例;您所做的只是向命令添加一对选项<代码>别名rg='rg--pretty less-XFRS'。(除非您想确保
--pretty less
覆盖用户可能提供的任何
--pretty
选项。)似乎解决了问题!我知道
命令
,但我不知道它的功能与shell引用名称有什么不同。谢谢