Para realizar algo assim, você precisará colocar algum código no que é chamado de subcomando na maioria dos shells. No Bash, sua notação é $(...some command...)
.
Abordagem
$ find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g'
Esse one liner produzirá uma lista de diretórios que contêm um subdiretório /bin
dentro deles. Não é 100% perfeito, pois não pode manipular diretórios que contenham espaços em seus nomes, mas se você souber que sua situação está de acordo com essa regra, você poderá usá-la.
Usando o snippet acima, você construiria seu $PATH
da seguinte forma:
PATH=$PATH:$(find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g')
Exemplo
Para este exemplo, usarei $MYPATH
como um substituto para $PATH
. Para começar, temos alguns diretórios já contidos em $MYPATH
.
$ MYPATH=/path1/bin:/path2/bin
$ echo $MYPATH
/path1/bin:/path2/bin
Agora, adicione todos os diretórios ~/project*/bin
a $MYPATH
:
$ MYPATH=$MYPATH:$(find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g')
$ echo $MYPATH
/path1/bin:/path2/bin:/Users/slm/project1/bin:/Users/slm/project2/bin:/Users/slm/project3/bin