exec
শেল স্ক্রিপ্টগুলিতে প্রায়শই ব্যবহৃত হয় যা মূলত অন্যান্য বাইনারিগুলি শুরু করার জন্য মোড়ক হিসাবে কাজ করে। উদাহরণ স্বরূপ:
#!/bin/sh
if stuff;
EXTRA_OPTIONS="-x -y -z"
else
EXTRA_OPTIONS="-a foo"
fi
exec /usr/local/bin/the.real.binary $EXTRA_OPTIONS "$@"
যাতে মোড়কটি চালানো শেষ হওয়ার পরে, "আসল" বাইনারিটি গ্রহণ করে এবং প্রক্রিয়া সারণীতে সাময়িকভাবে একই স্লটটি দখল করা মোড়ক স্ক্রিপ্টের আর কোনও চিহ্ন খুঁজে পাওয়া যায় না। "আসল" বাইনারি হ'ল নাতি-নাতনীর পরিবর্তে যা কিছু চালু করা হয়েছিল তার সরাসরি সন্তান।
আপনি আপনার প্রশ্নে I / O পুনঃনির্দেশের কথাও উল্লেখ করেছেন। এটি একেবারে আলাদা ব্যবহারের ক্ষেত্রে exec
এবং শেলটি অন্য প্রক্রিয়াতে প্রতিস্থাপনের সাথে কিছুই করার থাকে না। যখন exec
কোন যুক্তি নেই, যেমন:
exec 3>>/tmp/logfile
তারপরে কমান্ড লাইনে I / O পুনর্নির্দেশগুলি বর্তমান শেল প্রক্রিয়াতে কার্যকর হয়, তবে বর্তমান শেল প্রক্রিয়া চলতে থাকে এবং স্ক্রিপ্টের পরবর্তী কমান্ডে চলে যায়।