ঠিক আছে, যথাযথ ক্রমটি পৃথক হতে পারে, কারণ প্রকৃত প্রোগ্রামটি কার্যকর হওয়ার আগে প্রথমে শেল ওরফে বা ফাংশনটি প্রসারিত / ব্যাখ্যাযোগ্য হতে পারে এবং তারপরে কোনও যোগ্য ফাইল নাম ( /usr/libexec/foo
) বনাম কিছু ডিরেক্টরি যা বিভিন্ন ডিরেক্টরিতে অনুসন্ধান করা হবে এর PATH
এনভায়রনমেন্ট ভেরিয়েবল (ঠিক foo
)। এছাড়াও, মৃত্যুদণ্ড বিবরণ, বিষয় জটিল হতে পারে foo | bar | zot
(কিছু সংখ্যা শেল জন্য আরো কাজ করা প্রয়োজন fork(2)
, dup(2)
অবশ্যই, এবং, pipe(2)
, অন্যান্য সিস্টেম কল মধ্যে), যখন ভালো কিছু exec foo
অনেক কম কাজ হিসাবে শেল নিছক নিজেই প্রতিস্থাপন নতুন প্রোগ্রাম (যেমন, এটি হয় না fork
)। প্রক্রিয়া গ্রুপগুলিও গুরুত্বপূর্ণ (বিশেষত অগ্রভাগের প্রক্রিয়া গ্রুপ, সমস্ত পিআইডি যা খায়SIGINT
যখন কেউ Ctrl+ C, সেশনগুলিতে ম্যাশ করা শুরু করে এবং কাজটি পটভূমিতে পরিচালিত হচ্ছে কিনা তা পর্যবেক্ষণ করা হয় (মনিটরিং করা হয় foo &
) বা ব্যাকগ্রাউন্ডে উপেক্ষা করা হয় ( foo & disown
)। আই / ও পুনঃনির্দেশের বিবরণগুলিও জিনিসগুলি পরিবর্তন করবে, যেমন, যদি শেল ( foo <&-
) দ্বারা স্ট্যান্ডার্ড ইনপুট বন্ধ করা হয় , বা কোনও ফাইল স্টিডিন ( foo < blah
) হিসাবে খোলা আছে কিনা ।
strace
বা অনুরূপ এই প্রক্রিয়াটিতে করা নির্দিষ্ট সিস্টেম কল সম্পর্কে তথ্যবহুল হতে পারে এবং সেই সমস্ত কলগুলির জন্য ম্যান পেজ থাকা উচিত। স্টিভেনসের "অ্যাডভান্সড প্রোগ্রামিং ইন ইউএনএক্স এনভায়রনমেন্ট" থেকে যথাযথ সিস্টেম স্তরের পাঠ্যক্রমের কয়েকটি অধ্যায় হবে যখন একটি শেল বই (যেমন, "বাশ থেকে জেড শেল থেকে") আরও বিশদে জিনিসগুলির শেল দিকটি কভার করবে।