लिनक्स बनाम मैक ओएस में बैश


27

मैं एक iMac खरीद रहा हूँ। मैं लंबे समय से लिनक्स पर काम कर रहा हूं और मैं बैश स्क्रिप्टिंग का एक गुच्छा करता हूं। मैं सोच रहा था कि क्या मैक ओएस पर सभी बैश कमांड और फीचर्स उपलब्ध हैं? किसी को मैक बैश पटकथा के साथ कोई अनुभव है? मैं आपके इनपुट की सराहना करता हूं।

जवाबों:


32

बैश खुद ही ज्यादातर होगा। कुछ छोटे अंतर होंगे लेकिन इनमें से कोई भी आपकी स्क्रिप्ट की पोर्टेबिलिटी को प्रभावित नहीं करेगा।

प्रमुख समस्या यह है कि मैकओएस कोर्यूटिल्स FreeBSD- आधारित हैं, जबकि जिन उपयोगिताओं का आप उपयोग कर रहे हैं, वे जीएनआर प्रोजेक्ट से सबसे अधिक संभावना हैं। फ्रीबीएसडी कोरुटिल हमेशा जीएनयू कोरुटिल्स के साथ संगत नहीं होते हैं। जीएनयू और फ्रीबीएसडी संस्करणों के साथ सेड , ग्रीप , पीएस और अन्य उपयोगिताओं के बीच प्रदर्शन और व्यवहार अंतर हैं

आप GNU कोरुटिल्स को स्थापित कर सकते हैं लेकिन उनके पास g-उपसर्ग हैं (उदाहरण के gcatलिए cat)। यह एक अच्छा विचार नहीं GNU coreutils साथ MacOS coreutils को बदलने के लिए।


6
यह प्रवर्धित किया जाना चाहिए कि मानक FreeBSD- आधारित मुख्य उपयोगिताओं का उपयोग आपकी स्क्रिप्ट की पोर्टेबिलिटी को प्रभावित कर सकता है (जैसे, psअलग-अलग झंडे हैं, जैसा कि करता है grep)। मैं दीवार के खिलाफ अपना सिर पीट रहा हूं, यह जानने की कोशिश कर रहा हूं कि मेरी उबंटू स्क्रिप्ट मेरे मैक पर समान आउटपुट क्यों नहीं दे रही है।
क्रिस ग्रीग

1
यदि आप अपनी स्क्रिप्ट पोर्टेबल होना चाहते हैं, तो www2.opengroup.org/ogsys/jsp/publications/mainPage.jsp , POSIX और XCU क्षमताओं और आदेशों के लिए सख्ती से मानक विनिर्देश प्राप्त करने के लिए एक शानदार जगह है।
कोजीरो

@ क्रिसग्रेग: मैं सहमत हूं। मैंने अपने जवाब में थोड़ा जोर देकर कहा है कि दो उपकरण सेटों के बीच असंगतताएं हैं।

5

अगर यह मायने रखता है, bashमैक ओएस एक्स माउंटेन शेर पर अभी भी 3.2 संस्करण है। इन दिनों अधिकांश लिनक्स वितरण 4.x के साथ शिपिंग कर रहे हैं, इसलिए आप संस्करण 4 की विशेषताओं को याद नहीं करेंगे। वर्तमान में, संस्करण 4.2.45 होमब्रे से वर्कअराउंड के रूप में उपलब्ध है। मुझे नहीं पता कि मावेरिक्स में कौन सा संस्करण है, मुझे यकीन नहीं है कि जो कोई भी जानता है उसे अभी तक कहने की अनुमति है।

जैसा कि दूसरों ने उल्लेख किया है, bashवही bash(पहले से ही उल्लेखित संस्करणों के अलावा) है, लेकिन मैक ओएस एक्स एक (ज्यादातर) बीएसडी उपयोगकर्ता का उपयोग करता है। कई मानक प्रणाली उपयोगिताओं में थोड़ा अलग विकल्प होते हैं या थोड़ा अलग तरीके से व्यवहार करते हैं। वे दुर्भाग्य से यहाँ सूचीबद्ध करने के लिए बहुत सारे हैं।


2
4 साल बाद हाई सिएरा पर बैश अभी भी उपयोग हो रहा है: GNU बैश, संस्करण 3.2.57 (1) -release (x86_64-apple-darwin17) कॉपीराइट (C) 2007 फ्री सॉफ्टवेयर फाउंडेशन, इंक।
नैट लॉकवुड

4

स्थापित homebrew (एक पैकेज प्रबंधक) तो कुछ बुनियादी उपयोगिताओं के gnu संस्करणों को स्थापित:

$ brew install coreutils
$ brew install gnu-sed

प्रत्येक इंस्टॉल के बाद, यह उन चरणों को दिखाएगा जिनका आप अनुसरण कर सकते हैं ताकि आप उदाहरण dateके gdateलिए बस कॉल कर सकें, ताकि आप अभी भी बिना किसी संशोधन के अपनी लिनक्स बैश स्क्रिप्ट का उपयोग कर सकें।

बधाई हो, आपने अभी-अभी अपने क्रॉस-प्लेटफ़ॉर्म स्क्रिप्टिंग मुद्दों का 99% हल किया है।


3
दूसरी ओर, यदि आपकी स्क्रिप्ट वास्तव में पोर्टेबल होने का मतलब है, तो आप स्क्रिप्ट को ठीक करना चाहेंगे, लक्षण नहीं।
ट्रिपल जूल

2

एक चीज जो लिनक्स से मैक पर आने से निराश हो सकती है, वह है कि कोई /procछद्म फाइल सिस्टम नहीं है। इसने मेरी लिनक्स स्क्रिप्ट की एक संख्या को तोड़ दिया है, और procआपके मैक मैक स्क्रिप्ट में वही जानकारी प्राप्त करने के लिए उपयुक्त तरीके खोजने के लिए यह मुश्किल हो सकता है ।


0

मैं 'मुख्य रूप से लिनक्स, कभी-कभी मैक' उपयोगकर्ता हूं और मुझे लगता है कि:

बैश, ~/.bashrcऔर ~/.bash_aliasesज्यादातर एक ही काम करते हैं।

एक समस्या जो मुझे मिली है वह थी कलर कमांड को बदलने के लिए कमांड में से एक मैक पर काम नहीं करना। उस और अन्य अनुभवों से मैंने अपनी .bashrcफ़ाइल को सेट करते समय एक टर्मिनल विंडो को खोलना और लॉग इन करना सीखा है । यही मैं 'नई विंडो' का परीक्षण कर सकता था और अभी भी एक लॉग में कोई त्रुटि पा सकता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.