问题
I've never had this problem before with my other machines but for some reason in ZSH whenever I type
which gem
or
which rvm
I get the function contents:
gem () {
local result
command gem "$@"
result="$?"
hash -r
return $result
}
instead of it's path. For the life of me I can not figure out why this is happening.
If I switch over to bash I do not have these problems.
回答1:
This is normal behavior for zsh. The which
built-in is equivalent to whence -c
, which shows the definitions of functions. Use whence
, possibly with a combination of options that does not include -f
or -c
, if you don't want this. For example whence -w gem
will display gem: function
. If you only want to search for external executables (and not aliases, built-ins, reserved words or functions), use whence -v
.
来源:https://stackoverflow.com/questions/7719757/zsh-which-rvm-or-which-gem-returns-the-function-contents-instead-of-the-path