Підоболонки Bash і паралельна обробка
А оболонка є основним інтерфейсом для введення команд на a Linux системи. З його допомогою ви можете безпосередньо ввести команду або вказати файл (скрипт), який містить послідовність команд, які потрібно виконати. Оболонки організовані в ієрархію, і будь-яка оболонка може створити нову оболонку. Нова оболонка вважається дочірнім процесом — a підоболонка— батьківської оболонки, яка його створює.
За замовчуванням підоболонка залежить від свого батька в тому сенсі, що якщо батьківський процес завершується, підоболонка також завершується. Будь-який висновок передається з підоболонки в батьківську оболонку.

Як створити підоболочку
У сценарії оболонки Bash створіть підоболонку, використовуючи позначення в дужках:
#!/bin/bash
# subshell-example.sh з нескінченним циклом
(
поки [ 1 ]
робити
echo «Запущена підоболонка.. ."
зроблено
)
У прикладі цикл while укладено в дужки, що призводить до його виконання в підоболонці оболонки, в якій виконується файл сценарію.
Запуск підоболонки у фоновому режимі
Якщо ви не вкажете, що підоболонка має виконуватися у фоновому режимі, батьківська оболонка чекає завершення підоболонки, перш ніж продовжити роботу з рештою сценарію. Однак, щоб паралельно запускати підоболонки, запустіть їх у фоновому режимі, що виконується за допомогою символу амперсанда після виразу підоболонки, як показано тут:
#!/bin/bash
для ip в {1..254}; робити
host=192.168.1.$ip
(ping -c 1 $host > /dev/null
якщо [ "$?" = 0 ]
тоді
echo $host
fi) &
зроблено
Паралельний запуск кількох підоболонок
Якщо ви створюєте кілька підоболонок як фонові процеси, можна виконувати завдання паралельно. Зазвичай операційна система використовує різні процесори або ядра для кожного процесу і підпроцесу, припускаючи, що процесорів або ядер принаймні стільки, скільки процесів. В іншому випадку завдання призначаються тим же процесорам або ядрам. У цьому випадку процесор або ядро постійно перемикаються між призначеними завданнями, доки завдання не будуть завершені.
Використовуйте оператор wait, щоб повідомити батьківському процесу дочекатися завершення підпроцесів, перш ніж перейти до решти сценарію:
Використовується для підоболонок
Підоболонки корисні, коли команди потрібно виконати в певному середовищі або каталозі. Якщо кожна команда виконується в іншій підоболонці, немає ризику переплутати параметри змінних. Після завершення налаштування та поточний каталог не потрібно відновлювати, оскільки жоден з його підпроцесів не впливає на середовище батьківського процесу.
Підоболонки працюють з визначеннями функцій, виконуваними багато разів з різними параметрами.