जवाबों:
बैश खुद ही ज्यादातर होगा। कुछ छोटे अंतर होंगे लेकिन इनमें से कोई भी आपकी स्क्रिप्ट की पोर्टेबिलिटी को प्रभावित नहीं करेगा।
प्रमुख समस्या यह है कि मैकओएस कोर्यूटिल्स FreeBSD- आधारित हैं, जबकि जिन उपयोगिताओं का आप उपयोग कर रहे हैं, वे जीएनआर प्रोजेक्ट से सबसे अधिक संभावना हैं। फ्रीबीएसडी कोरुटिल हमेशा जीएनयू कोरुटिल्स के साथ संगत नहीं होते हैं। जीएनयू और फ्रीबीएसडी संस्करणों के साथ सेड , ग्रीप , पीएस और अन्य उपयोगिताओं के बीच प्रदर्शन और व्यवहार अंतर हैं ।
आप GNU कोरुटिल्स को स्थापित कर सकते हैं लेकिन उनके पास g-उपसर्ग हैं (उदाहरण के gcatलिए cat)। यह एक अच्छा विचार नहीं GNU coreutils साथ MacOS coreutils को बदलने के लिए।
अगर यह मायने रखता है, bashमैक ओएस एक्स माउंटेन शेर पर अभी भी 3.2 संस्करण है। इन दिनों अधिकांश लिनक्स वितरण 4.x के साथ शिपिंग कर रहे हैं, इसलिए आप संस्करण 4 की विशेषताओं को याद नहीं करेंगे। वर्तमान में, संस्करण 4.2.45 होमब्रे से वर्कअराउंड के रूप में उपलब्ध है। मुझे नहीं पता कि मावेरिक्स में कौन सा संस्करण है, मुझे यकीन नहीं है कि जो कोई भी जानता है उसे अभी तक कहने की अनुमति है।
जैसा कि दूसरों ने उल्लेख किया है, bashवही bash(पहले से ही उल्लेखित संस्करणों के अलावा) है, लेकिन मैक ओएस एक्स एक (ज्यादातर) बीएसडी उपयोगकर्ता का उपयोग करता है। कई मानक प्रणाली उपयोगिताओं में थोड़ा अलग विकल्प होते हैं या थोड़ा अलग तरीके से व्यवहार करते हैं। वे दुर्भाग्य से यहाँ सूचीबद्ध करने के लिए बहुत सारे हैं।
स्थापित homebrew (एक पैकेज प्रबंधक) तो कुछ बुनियादी उपयोगिताओं के gnu संस्करणों को स्थापित:
$ brew install coreutils
$ brew install gnu-sed
प्रत्येक इंस्टॉल के बाद, यह उन चरणों को दिखाएगा जिनका आप अनुसरण कर सकते हैं ताकि आप उदाहरण dateके gdateलिए बस कॉल कर सकें, ताकि आप अभी भी बिना किसी संशोधन के अपनी लिनक्स बैश स्क्रिप्ट का उपयोग कर सकें।
बधाई हो, आपने अभी-अभी अपने क्रॉस-प्लेटफ़ॉर्म स्क्रिप्टिंग मुद्दों का 99% हल किया है।
एक चीज जो लिनक्स से मैक पर आने से निराश हो सकती है, वह है कि कोई /procछद्म फाइल सिस्टम नहीं है। इसने मेरी लिनक्स स्क्रिप्ट की एक संख्या को तोड़ दिया है, और procआपके मैक मैक स्क्रिप्ट में वही जानकारी प्राप्त करने के लिए उपयुक्त तरीके खोजने के लिए यह मुश्किल हो सकता है ।
मैं 'मुख्य रूप से लिनक्स, कभी-कभी मैक' उपयोगकर्ता हूं और मुझे लगता है कि:
बैश, ~/.bashrcऔर ~/.bash_aliasesज्यादातर एक ही काम करते हैं।
एक समस्या जो मुझे मिली है वह थी कलर कमांड को बदलने के लिए कमांड में से एक मैक पर काम नहीं करना। उस और अन्य अनुभवों से मैंने अपनी .bashrcफ़ाइल को सेट करते समय एक टर्मिनल विंडो को खोलना और लॉग इन करना सीखा है । यही मैं 'नई विंडो' का परीक्षण कर सकता था और अभी भी एक लॉग में कोई त्रुटि पा सकता हूं।
psअलग-अलग झंडे हैं, जैसा कि करता हैgrep)। मैं दीवार के खिलाफ अपना सिर पीट रहा हूं, यह जानने की कोशिश कर रहा हूं कि मेरी उबंटू स्क्रिप्ट मेरे मैक पर समान आउटपुट क्यों नहीं दे रही है।