我有一个看起来像这样的 shell 函数:
rebar3 () {
set -o localoptions -o localtraps
trap '/bin/stty sane' INT
command rebar3 "$@"
}
我如何找出在哪里command rebar3
可以找到rebar3
二进制文件?
我尝试了以下方法,但均无效:
% which rebar3
rebar3 () {
set -o localoptions -o localtraps
trap '/bin/stty sane' INT
command rebar3 "$@"
}
...没有帮助。
% command -v rebar3
rebar3
...没有帮助。
% command -V rebar3
rebar3 is a shell function from /Users/rogerlipscombe/.zshrc
……我早就知道了。
% command -p rebar3
zsh: command not found: rebar3
...因为二进制文件不在默认路径中。
如何让 zsh 在使用which
or时忽略函数/别名command -v
?
我在这里找到了答案:https ://stackoverflow.com/a/14196212/8446
POSIX 方式适用于 zsh:
明确执行查找的 POSIX 方法
PATH
也有效。在这里,我展示了一种简单的方法,假设$PATH
没有空组件。path
由于数组和N
glob 限定符,Zsh 有一种更简单的路径查找方法。或者,从您想要类似
command -v rebar3
or 或type rebar3
or 的想法开始,查找, orwhich rebar3
的文档,所有这些都表明这些是内置函数的包装器。这导致你command
type
which rebar3
whence
仅显示外部命令,或其中之一
显示所有内容(别名、函数、内置外部命令)。
which -a rebar3
也可以,但它显示的功能代码在这里会让人分心。