Чтобы узко ответить на вопрос, порождая три замены процесса и объединяя их результаты, работа будет выполняться параллельно, генерируя выходные данные в известном порядке:
PS1=$(cat <(GIT_PROMPT) <(PAMAC_PROMPT) <(BUSICH_PROMPT))
Аналогично, в bash 4.1 или более поздней версии,Вы можете явно запустить внешний процесс и прикрепить автоматически назначенный файловый дескриптор, который будет использоваться для чтения его выходных данных:
# start GIT_PROMPT function in the background
exec {git_prompt_fd}< <(GIT_PROMPT)
# ...do other stuff...
# now, later, read its output
git_prompt=$(</dev/fd/$git_prompt_fd)
... с учетом того, что вы хотите избежать любых операций, которые блокируют записьна стандартный вывод до тех пор, пока не будет выполнена тяжелая работа внутри вашей функции.
Тем не менее, я вообще не рекомендую, чтобы особенно в коде, чувствительном к производительности, как подсказка,Намного лучше было бы проверить ваши функции и запретить им иметь любые операции вилки, любое использование внешних команд и т. Д .;вместо добавления еще больше вилок во имя распараллеливания.