Zsh Can';t编写函数来复制Bash';s';帮助';命令
我试图在.zshrc中复制Bash的Zsh Can';t编写函数来复制Bash';s';帮助';命令,zsh,zshrc,Zsh,Zshrc,我试图在.zshrc中复制Bash的help命令。我认为这会奏效: function help { bash -c "help $@" } 但这只在我只传递一个参数时起作用——例如,help exit。当我将选项传递给help时,它不起作用,例如help-m exit(在Bash中工作)。但是,按字面意思键入bash-c“help-m exit”的效果与预期一样。我想这与在shell中引用的工作方式有关,但我无法理解这一点。您可以使用 function help { bash -c "
help
命令。我认为这会奏效:
function help {
bash -c "help $@"
}
但这只在我只传递一个参数时起作用——例如,help exit
。当我将选项传递给help
时,它不起作用,例如help-m exit
(在Bash中工作)。但是,按字面意思键入bash-c“help-m exit”的效果与预期一样。我想这与在shell中引用的工作方式有关,但我无法理解这一点。您可以使用
function help {
bash -c "help $*"
}
我想您在使用zsh时需要帮助,而不是bash。Bash对zsh的内置代码和特性一无所知,而常见的内置代码差异很大,足以保证有单独的文档页面 bash的
帮助
内置的等价物是运行帮助
,但默认情况下它不是活动的。它还将为您调用man
,并附带一些有用的包装
TLDR;把这个放进去
自动加载-Uz运行帮助
自动加载-Uz运行帮助git
自动加载-Uz运行帮助ip
自动加载-Uz运行帮助openssl
自动加载-Uz运行帮助-p4
自动加载-Uz运行帮助sudo
自动加载-Uz运行帮助svk
自动加载-Uz运行帮助svn
别名帮助=运行帮助
谢谢,这就解决了问题。我理解为什么
$*
有效,但我真的不理解为什么$@
无效。我可以看出在某些情况下,例如在列表上循环,$@
和$*
会有什么不同,但是,您能否解释一下,仅仅将变量放入另一个字符串中,它们的功能是如何不同的?$*返回一个带引号的字符串中传递的所有参数$@将它们作为单独的带引号的字符串返回,在您的情况下,它们作为多个参数传递给bash-最后的调用类似于bash-c“help funcarg1”“funcarg2”“funcargn”bash可能会忽略其他参数。您可以在这里阅读更多内容:bash
不忽略其他参数<代码>$0设置为funcarg2
,$1
设置为funcargn
。但是,您指定要运行的命令help funcarg1
忽略了$0
和$1
的值。感谢您修复标题@dashwuff