না, এটি মূলত এই কারণে নয় যে এটির জন্য ডিফল্টরূপে সিস্টেমগুলি গ্রহণের প্রয়োজন হয় না , বা কেবল পসিক্স মান (অন্য কোনও মান বাদে) মেনে চলতে হয় ।
উদাহরণস্বরূপ, সোলারিস (একটি প্রত্যয়িত কমপ্লায়েন্ট সিস্টেম) এর ইউটিলিটিগুলির জন্য পশ্চাদপদ সামঞ্জস্যতা বেছে নিয়েছিল /bin
, যা ব্যাখ্যা করে যে কেন তারা তীব্র উপায়ে আচরণ করে এবং পৃথক স্থানে POSIX- অনুবর্তী ইউটিলিটিগুলি সরবরাহ করে ( /usr/xpg4/bin
, /usr/xpg6/bin
... এক্সপিজির বিভিন্ন সংস্করণের জন্য (এখন মার্জ হয়েছে) পসিক্স) স্ট্যান্ডার্ডে, এগুলি আসলে সোলারিসে alচ্ছিক উপাদানগুলির অংশ)।
এমনকি এতে থাকার sh
নিশ্চয়তা নেই /bin
। সোলারিসে /bin/sh
সোলারিস 10 পর্যন্ত বোর্ন শেল (তাই পসিক্স অনুগত নয়) হিসাবে ব্যবহৃত হত, এখন এটি সোলারিস 11-এ এখন ksh93 (এখনও পুরোপুরি পসিক্স অনুগত নয়, তবে অনুশীলনে আরও বেশি /usr/xpg4/bin/sh
)।
সি থেকে, আপনি ব্যবহার করতে exec*p()
এবং ধরে নিতে পারেন যে আপনি কোনও পসিক্স পরিবেশে (বিশেষত PATH
পরিবেশের পরিবর্তনশীল সম্পর্কিত) in
আপনি PATH
পরিবেশ পরিবর্তনশীল সেট করতে পারে
#define _POSIX_C_SOURCE=200809L /* before any #include */
...
confstr(_CS_PATH, buf, sizeof(buf)); /* maybe append the original
* PATH if need be */
setenv("PATH", buf, 1);
exec*p("ps"...);
অথবা আপনি নির্ধারিত সময়ে আপনি যে পসিক্স ইউটিলিটিগুলি চালাতে চান তার পথ নির্ধারণ করতে পারেন (GNU এর মতো কিছু সিস্টেমে আপনার POSIXLY_CORRECT
সম্মতি নিশ্চিতকরণের জন্য ভেরিয়েবল সেট করার মতো আরও পদক্ষেপ প্রয়োজন )।
আপনি এর মতো জিনিসও চেষ্টা করে দেখতে পারেন:
execlp("sh", "sh", "-c", "PATH=`getconf PATH`${PATH+:$PATH};export PATH;"
"unset IFS;shift \"$1\";"
"exec ${1+\"$@\"}", "2", "1", "ps", "-A"...);
আশা নেই যে একটি sh
মধ্যে $PATH
, এটা বোর্ন মত, এর রয়েছে একটি করে যে getconf
এবং এটি POSIX তুমি আগ্রহী এর সংস্করণের জন্য এক যে।
/bin
,/bin/ed
অবশ্যই ব্যবহারযোগ্য হতে হবে যদি এড ইনস্টল করা থাকে। আমি এখনই এটি খুঁজে পাচ্ছি না, তবে আমি জানি যে এলএসবি এর উপর নির্ভর করে এবং আমি এটিকে যুক্তি হিসাবে সফলভাবে বগেরপোর্টগুলি রক্ষা করেছি, সুতরাং এটি অবশ্যই কমপক্ষে কোনও কোনও ক্ষেত্রে সত্য হওয়া উচিত। (অথবা এটা POSuX এবং আমি misremember চেয়ে কিছু অন্যান্য ছিল, কিন্তু বাকি সত্য।)