Чтобы выполнить что-то подобное, вам нужно поместить код в так называемую подкоманду в большинстве оболочек. В Bash его обозначение - $(...some command...)
.
Подход
$ find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g'
Этот вкладыш создаст список каталогов, в которых будет находиться подкаталог /bin
. Он не идеален на 100%, поскольку не может обрабатывать каталоги, в именах которых есть пробелы, но если вы знаете, что ваша ситуация соответствует этому правилу, вы можете использовать его.
Используя приведенный выше фрагмент, вы создадите свой $PATH
следующим образом:
PATH=$PATH:$(find ~ -iregex ".*project.*/bin" | xargs | sed 's/ /:/g')
пример
В этом примере я собираюсь использовать $MYPATH
в качестве замены для $PATH
. Для начала у нас есть несколько каталогов, уже содержащихся в $MYPATH
.
$ MYPATH=/path1/bin:/path2/bin
$ echo $MYPATH
/path1/bin:/path2/bin
Теперь, чтобы добавить все каталоги ~/project*/bin
в $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