Вы можете использовать подстановку команд bash $(command)следующим образом:
$(command1 ; command2) &
Обратите внимание, что stdin и stdout по-прежнему связаны с родительским процессом, и перенаправление, по крайней мере, stdout может быть сложным. Таким образом, в качестве альтернативы вы можете объединить команды в одну строку, а затем передать строку bashкоманде, чтобы породить новый процесс, который будет обрабатывать выполнение.
bash -c "command1 ; command2" &
Это особенно полезно в скрипте bash, когда вам нужно запустить несколько команд в фоновом режиме.
Эти два утверждения должны быть эквивалентны. Баш процесс икру в обоих случаях для обработки команды (цепь команд) и& в конце отсоединяет исполнения.
На этот раз вы можете добавить &>/dev/nullперед &в конце команды, чтобы перенаправить как минимум стандартный вывод и избежать вывода на стандартный вывод родительского процесса. Что-то вроде:
bash -c "command1 ; command2" &>/dev/null &
()чтобы окружить команду.