"হিসাবে আহ্বান" বাশ শুরু হওয়া প্রক্রিয়াটি তার "জিরোথ" কমান্ড লাইন আর্গুমেন্টে রাখে তা যা বোঝায় argv[0]।
exec*()সিস্টেমে যখন কোনও প্রোগ্রাম শুরু করা হয় , তখন তারা প্রোগ্রামটি সম্বলিত বাইনারি ফাইলের নামটি সত্যই জানতে পারে না, তবে পরিবর্তে কলিং প্রক্রিয়া সেখানে যা খুশি তা রাখতে পারে। সাধারণত, নামটি ফাইল সিস্টেম থেকে নেওয়া হয়, সুতরাং আপনি যদি চালনা করেন তবে /bin/shএটি সেখানে রাখা হয়। এবং যদি /bin/shবাশ হয় তবে এটি কোনও সিমিলিংক হওয়ার দরকার নেই, এটি একটি হার্ড লিঙ্ক বা শেল প্রোগ্রামের অন্য কোনও অনুলিপি হতে পারে।
"প্রোগ্রামের নাম" সেট করার উদাহরণ হিসাবে, বাশের execকমান্ড -aবিকল্পটি দিয়ে জিরোথ আর্গুমেন্ট সেট করতে পারে । (আমরা পার্লের সাথে বা সরাসরি সি ইত্যাদি দিয়ে একই কাজ করতে পারি)
এখানে, mynameএকটি সাধারণ সি প্রোগ্রাম যা কেবল তার জেরোথ আর্গুমেন্টটি প্রিন্ট করে, নামটি নিজে দেখায়:
$ ./myname
I am ./myname
$ (exec -a something ./myname )
I am something
$ mv ./myname somename
$ ln -s somename othername
$ ./somename
I am ./somename
$ ./othername
I am ./othername
উৎস:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("I am %s\n", argv[0]);
return 0;
}
তবে, সংখ্যাযুক্ত প্রশ্নের উত্তর দিতে ...
(1 এবং 4) দৌড়াতে আপনার sh somescriptযা কিছু আছে shতা চলবে PATH, সম্ভবত /bin/shতবে সম্ভবত এর মতো কিছু/usr/xpg4/bin/sh ।
- যদি এটি বাশ হয় তবে এটি নামটি দেখায় বলে এটি পসিএক্স মোডে চলে
sh।
- যদি এটি জেড শেল বা কর্ন শেল হয় তবে এটি একইভাবে নামটি দেখে
shতবে এটি "এসএইচ সামঞ্জস্যপূর্ণ" মোডে চলে, যা বোর্ন শেল সামঞ্জস্যপূর্ণ হওয়ার লক্ষ্য এবং those উভয় শেলের পুরো পসিক্স কনফর্মেন্ট মোডের সাথে সূক্ষ্মভাবে আলাদা is ।
- এটি অবশ্যই অ্যালকুইস্ট শেল, একটি আসল বোর্ন শেল বা অবশ্যই অন্য কিছু হতে পারে।
(2 & 5) রানিং bash somescriptনিয়মিত ব্যাশ মোডে চালানো হবে (আবার, অবশ্যই এটা কি উপর নির্ভর করে bashআপনার PATHহয়।)
(3) এখানে, স্ক্রিপ্টটির নাম প্রোগ্রামের ফাইলের জায়গায় সরাসরি সিস্টেম কলে দেওয়া হয়। কার্নেল হ্যাশবাং লাইনটি পড়ে এবং স্ক্রিপ্টটি চালাতে এটি ব্যবহার করে।
()) এটি জটিল। এটি (3) এর মতো, তবে ENOEXEC (Exec format error)কোনও হ্যাশবাং লাইন নেই বলে প্রোগ্রামটি শুরু করার জন্য সিস্টেম কল ব্যর্থ হয় ( )। পরবর্তীটি যা ঘটে তা নির্ভর করে আপনি যে শেলটি চালাচ্ছেন সে নিজেই পসিক্স মোডে রয়েছে কিনা depends পসিক্সের প্রয়োজন যে কোনও পসিক্স-কনফর্মেন্ট শেল প্রতিক্রিয়া হিসাবে একটি নির্দিষ্ট ফ্যাশনে আচরণ করবে ENOEXEC। তবে "শেলটি চাওয়ার সমান কমান্ড" এর কিছুটা অবকাশ রয়েছে যার অর্থ বিভিন্ন শেল বিভিন্ন কাজ করে।
- বোর্ন অ্যাগেইন শেলটি একই কমান্ড-লাইন আর্গুমেন্ট হিসাবে স্ক্রিপ্টটির নাম সহ একই মোডে নিজেকে পুনরায় চালায় । এর পসিএক্স-কনফরম্যান্ট মোডে এটি অবশ্যই নিজের পসিএক্স-কনফর্মেন্ট মোডে চলছে, এইভাবে পসিক্স-কনফর্মেন্ট শেলটি পোজ করার জন্য পসিক্স প্রয়োজনীয়তা মেনে চলে।
- জেড শেল, অলকুইস্ট শেল, এবং কর্ন শেলটি
/bin/shস্ক্রিপ্টটির নামের সাথে চালিত হয়ে অন্য আর্গুমেন্টের আগে এটির প্রথম কমান্ড-লাইন আর্গুমেন্ট হিসাবে .োকানো হয়েছে। জেড শেল, অ্যালকুইস্ট শেল এবং কর্ন শেল /bin/shপ্রোগ্রামটি একটি বলে ধরে নিয়ে ছদ্মবেশে একটি পসিক্স-কনফর্মেন্ট শেলটি আহ্বান করার চেষ্টা করছে (চেষ্টা করছে) ।