Eu tenho uma função shell que se parece com isso:
rebar3 () {
set -o localoptions -o localtraps
trap '/bin/stty sane' INT
command rebar3 "$@"
}
Como faço para descobrir onde command rebar3
está encontrando o rebar3
binário?
Eu tentei o seguinte, nenhum dos quais funciona:
% which rebar3
rebar3 () {
set -o localoptions -o localtraps
trap '/bin/stty sane' INT
command rebar3 "$@"
}
...não ajuda.
% command -v rebar3
rebar3
...não ajuda.
% command -V rebar3
rebar3 is a shell function from /Users/rogerlipscombe/.zshrc
...Eu já sabia daquilo.
% command -p rebar3
zsh: command not found: rebar3
...porque o binário não está no caminho padrão.
Como obtenho zsh para ignorar funções/aliases ao usar which
ou command -v
?
Encontrei a resposta aqui: https://stackoverflow.com/a/14196212/8446
A maneira POSIX funciona em zsh:
A maneira POSIX de fazer a
PATH
pesquisa explicitamente também funciona. Aqui mostro uma forma simples que assume que$PATH
não tem componentes vazios.O Zsh tem uma maneira muito mais simples de fazer uma pesquisa de caminho, graças ao
path
array e aoN
qualificador glob .Como alternativa, começando com a ideia de que você deseja algo aproximadamente como
command -v rebar3
ou outype rebar3
ouwhich rebar3
, procure a documentação docommand
,type
ouwhich rebar3
, que mostra que são wrappers em torno dowhence
builtin. Isso leva você apara mostrar apenas comandos externos, ou um dos
para mostrar tudo (aliases, funções, comandos externos embutidos).
which -a rebar3
também funciona, mas exibe o código de funções que é uma distração aqui.