सामान्य स्थिति में, आप डिफ़ॉल्ट कमांड्स को बिल्कुल नहीं बदल सकते (या नहीं )। कारण यह है कि कई सिस्टम एडमिनिस्ट्रेशन स्क्रिप्ट और थर्ड-पार्टी पैकेज शायद इन कमांडों पर भरोसा करते हैं कि वे ओएस एक्स के बॉक्स से बाहर निकलने के तरीके का व्यवहार करते हैं।
इसलिए यदि आप सिस्टम कमांड को मिटा देते हैं और उन्हें GNU समकक्षों के साथ बदल देते हैं जिसमें असंगत व्यवहार या कमांड लाइन तर्क होते हैं, तो यह संभवतः कुछ तोड़ देगा। विशेष रूप से यदि आप मूल रूप से लिनक्स या बीएसडी पर चलने के लिए डिज़ाइन किए जाने के बाद मैक ओएस एक्स के लिए "पोर्ट किए गए" कुछ सॉफ़्टवेयर का उपयोग करते हैं, क्योंकि इन प्रकार के कार्यक्रमों में ओएस एक्स एपीआई को कॉल करने के विपरीत शेल स्क्रिप्ट और सिस्टम कमांड पर भरोसा करने की अधिक संभावना है।
आप जो कुछ भी कर सकते हैं वह एक ऐसा वातावरण स्थापित करता है जो GNU उपयोगिताओं को डिफॉल्ट्स को ओवरराइट किए बिना किसी अन्य निर्देशिका में स्थापित करता है, और फिर अपने PATH
पर्यावरण चर को समायोजित करता है ताकि यह सिस्टम निर्देशिकाओं को खोजने से पहले GNU निर्देशिका के भीतर पाए जाने वाले कमांड को प्राथमिकता दे। आप इसे तार कर सकते हैं ताकि यह केवल आपके पेट को सेट करे अगर आप एक इंटरैक्टिव शेल शुरू कर रहे हैं; आप कैसे साथ ऐसा करने की गूगल कर सकते हैं bash
(इसके लिए खोज है, क्योंकि यह शायद पहले पूछे जा रहा है या) यदि आप ऐसा करना चाहते हैं या SU पर एक और सवाल पूछते हैं।
इस तरह के वातावरण का एक उदाहरण होमब्रे है जो उदाहरण के लिए sed
अन्य चीजों के बीच जीएनयू है । होमब्रेव स्थापित करने के बाद, आप टाइप कर सकते हैं
brew install coreutils
और GNU Coreutils स्थापित करें । इन के साथ प्रदान करेगा sed
, date
, printf
, wc
और कहा कि जीएनयू / लिनक्स, लेकिन नहीं ओएस एक्स हालांकि साथ जहाज, "ओवरराइड" डिफ़ॉल्ट ओएस एक्स binaries के लिए इतनी के रूप में नहीं कई अन्य उपकरण, वे के साथ उपसर्ग किया जाएगा g
डिफ़ॉल्ट रूप से। इसलिए, Coreutils स्थापित करने के बाद, यदि आप GNU sed का उपयोग करना चाहते हैं, तो टाइप करें
gsed
यदि यह हर बार टाइप करने के लिए बहुत अधिक परेशानी है, तो आप अपने पेटीएम में "gnubin" डायरेक्टरी जोड़ सकते हैं और बस GNU sed के साथ कॉल कर सकते हैं sed
। आपको निम्नलिखित को अपने साथ जोड़ना होगा ~/.bash_profile
:
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
बेशक, आप पागल (कर्नेल, X11, syscall संगतता, आदि) के लिए सूप से एक लिनक्स वातावरण की जरूरत है अगर आप इस तरह के रूप में एक आभासी मशीन, में लिनक्स चलाना होगा VirtualBox । यह एक सुरक्षित शर्त है यदि आपको सॉफ़्टवेयर या स्क्रिप्ट चलाने की आवश्यकता है जो लिनक्स पर चलाने के लिए डिज़ाइन की गई हैं।
होमब्रेव आपको केवल उन कार्यक्रमों के कुछ वर्गों के लिए अनुकूलता प्रदान करेगा जिनके लिए लिनक्स-विशिष्ट व्यवहार की आवश्यकता नहीं है। उदाहरण के लिए inotify
केवल लिनक्स पर उपलब्ध है। drm
(डायरेक्ट रेंडरिंग मैनेजर) केवल लिनक्स पर उपलब्ध है। कुछ अन्य नहीं बल्कि निम्न-स्तरीय सिस्टम कॉल हैं जो केवल लिनक्स पर उपलब्ध हैं, और जिसके लिए ओएस एक्स पर कोई समकक्ष मौजूद नहीं है, इसलिए लिनक्स से ओएस एक्स तक कुछ कार्यक्रमों को पोर्ट करना महत्वपूर्ण कोड परिवर्तनों के बिना अव्यवहारिक या असंभव हो सकता है।