Ну, точна послідовність може змінюватися, оскільки може бути псевдонім оболонки або функція, яка спочатку розширюється / інтерпретується до того, як реальна програма буде виконана, а потім відмінності для кваліфікованого імені файлу ( /usr/libexec/foo) порівняно з тим, що шукатиметься у всіх каталогах з PATHзмінної оточення (тільки foo). Крім того , деталі виконання можуть ускладнити ситуацію, оскільки foo | bar | zotвимагає більше роботи для оболонки (кілька fork(2), dup(2)і, звичайно ж , pipe(2)серед інших системних викликів), в той час як що - щось на зразок exec fooнабагато менше роботи , як оболонка просто замінює себе нова програма (тобто її немає fork). Важливими також є групи процесів (особливо група переднього плану, всі ПІД яких харчуються)SIGINTколи хтось починає масувати на Ctrl+ C, сеанси, а також чи буде робота виконуватись у фоновому режимі, відслідковується ( foo &) або фон, ігнорується ( foo & disown). Деталі переадресації вводу / виводу також змінять речі, наприклад, якщо стандартний вхід закритий оболонкою ( foo <&-) або відкрито файл як stdin ( foo < blah).
straceабо подібні будуть інформативними щодо конкретних системних дзвінків, здійснених в ході цього процесу, і для кожного з цих викликів повинні бути довідкові сторінки. Прийнятним для читання на рівні системи буде будь-яка кількість глав з "Розширеного програмування Стівенса в середовищі UNIX", тоді як книга оболонок (наприклад, "Від Баша до Z Шелла") більш детально висвітлює сторону оболонки.