Há um executável /usr/bin/fooque eu e outros scripts usamos, mas que se comporta um pouco mal, então criei um wrapper Bash com o mesmo nome de arquivo no /usr/local/bin/fooqual corrigi seu comportamento inadequado. Meu PATHé /usr/local/bin:/usr/bin. No script wrapper, eu tenho que executar o executável original por caminho absoluto para não entrar em um loop infinito:
$ cat /usr/local/bin/foo
#/bin/zsh
/usr/bin/foo | grep -v "^INFO" # stfu, really
Existe alguma maneira simples (talvez específica Zsh ou Bash) para executar próximo fooem PATH, que é o fooque está em PATHdiretórios que são depois o diretório do qual atual foofoi executado, para que eu não teria que usar o caminho absoluto para o executável original?
Eu poderia fazer uma função para isso /etc/zshenve não é um problema. Só estou me perguntando se existe algo padrão. Não quero usar alias ou corrigir o executável original.
EDIT 1:
$ cat /usr/local/bin/foo
#/bin/zsh
path=(${path/#%$0:A:h}) foo | grep -v "^INFO" # stfu, really
Isso deve esvaziar (mas manter) todas as seqüências de caracteres em PATH ( ${path/...}) que correspondem totalmente ( #%) ao :Adiretório absoluto ( ) ( :h) do executável atual ( $0). TBH, eu o montei no StackExchange e não o entendo completamente. Espero que não me morda.
EDIT 2:
$ cat /usr/local/bin/foo
#/bin/zsh
path[${path[(i)$0:A:h]}]=() foo | grep -v "^INFO" # stfu, really
$path[(i)foo]localiza o índice de foona matriz pathou mais 1 comprimento da matriz.