नहीं, यह मुख्य रूप से इस कारण से नहीं है कि सिस्टम को डिफ़ॉल्ट रूप से अनुरूप होने की आवश्यकता नहीं है , या केवल POSIX मानक (किसी अन्य मानक के अपवर्जन के लिए) का पालन करने के लिए ।
उदाहरण के लिए, सोलारिस (एक प्रमाणित आज्ञाकारी प्रणाली) ने अपनी उपयोगिताओं के लिए पिछड़ी अनुकूलता को चुना /bin
, जिसमें बताया गया है कि क्यों लोग आर्कन तरीके से व्यवहार करते हैं, और अलग-अलग स्थानों में पॉसिक्स-अनुरूप उपयोगिताओं प्रदान करते हैं ( ... /usr/xpg4/bin
, /usr/xpg6/bin
XPG के विभिन्न संस्करणों के लिए (अब विलय कर दिया गया है) POSIX में) मानक, जो वास्तव में सोलारिस में वैकल्पिक घटकों का हिस्सा हैं)।
यहां तक कि अंदर sh
होने की गारंटी भी नहीं है /bin
। सोलारिस पर, /bin/sh
सोलारिस 10 तक बॉर्न शेल (इसलिए POSIX कंप्लेंट नहीं) हुआ करता था, जबकि अब सोलारिस 11 में ksh93 है (अभी भी पूरी तरह से पॉसिक्स कंप्लेंट नहीं है, लेकिन प्रैक्टिस में ऐसा है /usr/xpg4/bin/sh
)।
C से, आप exec*p()
POSIX वातावरण में (विशेष रूप से PATH
पर्यावरण चर के संबंध में ) आप उपयोग कर सकते हैं और मान सकते हैं ।
आप 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"...);
या आप उस समय का निर्धारण कर सकते हैं जब आप पोसिक्स उपयोगिताओं के पथ का निर्माण करना चाहते हैं (इस बात को ध्यान में रखते हुए कि जीएनयू जैसे कुछ सिस्टमों पर, आपको 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 के अलावा कुछ था और मैं गलत समझती हूं, लेकिन बाकी सब सच है।)