Nah, urutan yang tepat dapat bervariasi, karena mungkin ada alias shell atau fungsi yang pertama kali diperluas / ditafsirkan sebelum program yang sebenarnya dijalankan, dan kemudian perbedaan untuk nama file yang memenuhi syarat ( /usr/libexec/foo
) versus sesuatu yang akan dicari melalui semua direktori dari PATH
variabel lingkungan (adil foo
). Juga, rincian eksekusi dapat memperumit masalah, karena foo | bar | zot
membutuhkan lebih banyak pekerjaan untuk shell (beberapa jumlah fork(2)
, dup(2)
dan, tentu saja, pipe(2)
antara panggilan sistem lainnya), sedangkan sesuatu seperti exec foo
ini jauh lebih sedikit bekerja sebagai shell hanya menggantikan dirinya dengan program baru (yaitu, tidak fork
). Juga penting adalah kelompok proses (terutama kelompok proses latar depan, semua PID yang makanSIGINT
ketika seseorang mulai menumbuk pada Ctrl+ C, sesi, dan apakah pekerjaan akan dijalankan di latar belakang, dipantau ( foo &
) atau latar belakang, diabaikan ( foo & disown
). Rincian pengalihan I / O juga akan mengubah hal-hal, misalnya, jika input standar ditutup oleh shell ( foo <&-
), atau apakah file dibuka sebagai stdin ( foo < blah
).
strace
atau yang serupa akan memberi informasi tentang panggilan sistem tertentu yang dibuat sepanjang proses ini, dan harus ada halaman manual untuk masing-masing panggilan itu. Pembacaan tingkat sistem yang sesuai adalah sejumlah bab dari "Programming Lanjutan di Lingkungan UNIX" dari Stevens, sementara buku shell (mis., "Dari Bash ke Z Shell") akan membahas sisi sisi hal-hal dengan lebih terinci.