Se eu tiver uma função assim:
#!/usr/bin/env bash
function foo {
}
e a função acima está em .bash_profile ou em algum lugar.
Se eu usar which foo
, não me dará a localização deste comando no shell script.
Existe alguma maneira de descobrir onde ele está localizado ou é grep
minha melhor aposta?
Responder1
Essa pergunta já foi respondidaaqui. Portanto, há duas coisas que podem ser derivadas desse fato:
- Você deveria fazer uma pesquisa melhor antes de postar sua pergunta aqui (mas bem, todos nós somos preguiçosos de vez em quando)
- Existe um truque muito melhor do que
grep
fazer o que você quer
Assim, você pode obter um arquivo fonte e um número de linha de uma função shell em seu PATH assim: (crédito:esta resposta)
# Turn on extended shell debugging
shopt -s extdebug
# Dump the function's name, line number and fully qualified source file
declare -F foo
# Turn off extended shell debugging
shopt -u extdebug
Responder2
which
apenas pesquisa o caminho. Para ver o que o bash realmente executa, use o comando integrado type
:
type foo