क्या कोई कारण है कि एक शबंग / बिन / शश के बजाय / बिन / बाश की ओर इशारा करता है?


53

अधिकांश शेल स्क्रिप्ट्स में मैंने देखा है (इसके अलावा मैंने खुद नहीं लिखा है), मैंने देखा कि शेबंग को सेट किया गया है #!/bin/sh। यह वास्तव में मुझे पुरानी स्क्रिप्ट पर आश्चर्य नहीं करता है, लेकिन यह काफी नई स्क्रिप्ट पर भी है।

वहाँ पसंद करते हैं के लिए किसी भी कारण है /bin/shसे अधिक /bin/bashहै, क्योंकि bashकाफी सर्वव्यापी है, और अक्सर डिफ़ॉल्ट एक दशक से अधिक वापस ठीक चल रहा कई Linux और BSD मशीनों पर?


23
/bin/shयदि आप विशिष्ट bashकार्यों का उपयोग नहीं करते हैं तो यह उपयोग करने के लिए एक अच्छा पक्ष है । एक दिन आपको अपनी एक स्क्रिप्ट का उपयोग उस सिस्टम पर करना होगा जिस पर यह स्थापित नहीं है (रिमोट सर्वर, एम्बेडेड कंप्यूटर ...)
मैथ्यू

1
सामान्य तौर पर आपको उन प्रश्नों को पूछने से बचना चाहिए जो खुद को राय के आधार पर जवाब देने के लिए उधार देते हैं (जो एकमात्र संभव तरीका है मेरा मानना ​​है कि इस प्रश्न का उत्तर दिया जा सकता है - लेकिन यह सिर्फ मेरी राय है )
मोकेसर

9
मेरा मानना ​​है कि कम से कम दो संगठनों की ओर इशारा करते हुए इस सवाल का जवाब देना संभव है, कम से कम दो संगठनों ने कई वर्षों में इस बात को संबोधित किया, और इतिहास और परिणाम को देखते हुए। बूट करने के लिए और अधिक पढ़ने के साथ संलग्न। B
JdeBP

3
@JulesMazur ...the answers so far are fairly subjective...ए "व्यक्तिपरक" बयान मूल रूप से परिभाषा के आधार पर राय है। /bin/bashकेवल तब उपयोग किया जाना चाहिए जब बैश स्पष्ट रूप से आवश्यक हो। एक डेवलपर के रूप में 40+ वर्षों में, बहुत पहले bash, मुझे लगभग कभी भी स्पष्ट रूप से इसकी आवश्यकता नहीं थी जब परीक्षण किया जाए। (मैं शेल एक्सटेंशन से बचने का भी प्रयास करता हूं, लेकिन मेरी अधिकांश स्क्रिप्ट वितरण के लिए अभिप्रेत हैं।) नेट पर कई स्क्रिप्ट्स का व्यापक उपयोग के लिए भी इरादा होना चाहिए।
user2338816

2
@ user2338816 मेरा बुरा, मेरा मतलब उद्देश्य था । आपकी बातों के लिए धन्यवाद!
जूल्स

जवाबों:


83
  1. ऐसे सिस्टम हैं जो डिफ़ॉल्ट रूप से शिपिंग बैश नहीं हैं (जैसे FreeBSD)।
  2. यदि बैश स्थापित है, तो भी यह स्थित नहीं हो सकता है /bin
  3. अधिकांश सरल लिपियों में बैश की आवश्यकता नहीं होती है।
  4. POSIX शेल का उपयोग करना अधिक पोर्टेबल है और स्क्रिप्ट विभिन्न प्रकार के सिस्टम पर चलेगी।

17
एक और कारण: अक्सर / बिन / शश से तेज होता है, या कम से कम जल्दी (छोटा होने के कारण) लोड होता है।
derobert

5
@derobert, /bin/shअगर यह नहीं है तो तेज़ है bash, अभी भी कुछ सिस्टम हैं जैसे OS / X या RHEL जहां /bin/shहै bash
स्टीफन चेज़लस

1
नहीं, कुछ OS इसे लिंक करते हैं, क्योंकि बैश पीछे की ओर संगत है।
सोब्रीक

7
काफी कुछ स्क्रिप्ट है जो मानती /bin/shहै /bin/bashटकसाल से डैश पर स्विच करने वाले उबंटू ने उन सभी को तोड़ दिया।
एटमन्रोमैन

19
@atamanroman: स्क्रिप्ट पहले गलत थे, #!/bin/bashअगर उन्हें बैश चाहिए था (तो इसमें कुछ भी गलत नहीं है!)। परिवर्तन ज्यादातर डेबियन में ऊपर की ओर किया गया था। इसने उपयोगकर्ता अनुभव में सुधार किया, सिस्टम स्टार्टअप समय पर इसका औसत दर्जे का प्रभाव पड़ा। यह सकारात्मक रूप से सुरक्षा को प्रभावित करता है, "शेलशॉक" देखें।
डिट्रीच एप्प

28

अधिकांश सिस्टम स्क्रिप्ट में (डेबियन संबंधित: उबंटू, मिंट, आदि) लिनक्स को तेज डैश में चलाने के लिए लिखा गया है, जो उन सिस्टमों में डिफ़ॉल्ट / बिन / श है। कारण दुगना है:

  • प्रणाली की गति। डैश का एक छोटा कोड तेजी से लोड होता है और तेजी से चलता है। शेल स्क्रिप्ट के प्रोग्रामरों के लिए कुछ (छोटे?) अतिरिक्त प्रयास (लागत) के साथ।

  • सुरक्षा। गोले की विविधता होने से बग्स को लचीलापन मिलता है। डेबियन सिस्टम ज्यादातर शेलशॉक के लिए असुरक्षित नहीं थे क्योंकि डिफ़ॉल्ट शेल में ऐसी भेद्यता नहीं थी।

बैश वास्तव में उपयोगकर्ताओं के लिए डिफ़ॉल्ट शेल है , जैसा कि अधिक शक्तिशाली है और इसमें कोडिंग को आसान बनाने के लिए बहुत अधिक तत्व हैं। यह shमैक ओएस (एक / बिन / श से जुड़ा हुआ) में भी डिफ़ॉल्ट है। हालाँकि, बनाता है bashलिंक नाम के साथ shयह एक पॉजिक्स आज्ञाकारी खोल के रूप में शुरू होता है।


2
एक सरल शेल के उपलब्ध साधनों का अधिक सीमित सेट इसके लिए लेखन कोड को और अधिक कठिन बनाता है (कृपया इस पर किसी भी कट्टर युद्ध से बचें)। यही कारण है कि कुछ उपयोगकर्ता zsh को पसंद करते हैं, जिनके पास बैश की तुलना में और भी अधिक उपकरण उपलब्ध हैं। मुझे बैश अधिक पसंद है क्योंकि दोनों चरम सीमाओं के बीच एक संतुलन है।

4
@ रोबर्टएल, कोश में जोड़ी गई और बाश द्वारा अपनाई गई कई सुविधाएं मौजूद हैं क्योंकि वे मजबूत और सही स्क्रिप्ट लिखने की प्रक्रिया को काफी हद तक आसान कर देती हैं। उदाहरण के लिए, अप्रत्यक्ष असाइनमेंट और मूल्यांकन को सुरक्षित रूप से निष्पादित करने की अनुमति देने वाले विभिन्न योगों के बिना eval, परिचर सुरक्षा जोखिम के साथ , कोई भी व्यक्ति स्वयं का उपयोग कर सकता है ; इसी तरह, बिल्ट-इन रेगेक्स सपोर्ट के बिना, किसी को एक लाइन के भीतर भी मिलान के लिए बाहरी कमांड (एक भारी प्रदर्शन के दंड पर) का उपयोग करने की आवश्यकता हो सकती है,
चार्ल्स डफी

1
@ रुईएफबीबिरो, कुछ भी सांख्यिकीय रूप से डेबियन में जुड़ा हुआ नहीं है। डैश अधिक सीमित है, लेकिन यह मुख्य रूप से इंटरैक्टिव फीचर्स (कोई पूर्णता और ऐसा नहीं) में सीमित है ताकि यह स्क्रिप्ट के लिए तेज़ हो।
Jan Hudec

21

अन्य लोगों ने कहा है कि प्रश्न के परिसर, कि बॉर्न अगेन शेल डिफ़ॉल्ट और सर्वव्यापी है, सर्वथा गलत हैं।

इसके अलावा, खोल स्क्रिप्ट की व्याख्या करने के लिए बॉर्न अगेन शेल के अलावा किसी अन्य चीज का उपयोग करने के लिए वास्तव में अच्छे कारण हैं। इन कारणों उबंटू के और डेबियन की बड़ी परियोजना प्रेरित, कई वर्षों से अधिक, bashisms दूर करने के लिए और सिस्टम आरंभीकरण द्वारा चलाए जा शेल स्क्रिप्ट के रूप में कई (जो एक था बनाने के लिए बहुत प्रणाली 5 के साथ शेल स्क्रिप्ट के rcऔर पैकेज स्थापना / हटाने का उपयोग करें) बॉर्न अगेन शेल के बजाय डेबियन अल्मक्विस्ट शेल।

सीधे शब्दों में कहें: द बॉर्न अगेन शेल, इंटरैक्टिव फीचर्स से भरपूर, जैसा कि है, पॉसिक्स-कंफर्टेबल शेल स्क्रिप्ट के लिए सबसे तेज शेल इंटरप्रेटर नहीं है। इसलिए यदि कोई एक शेल स्क्रिप्ट को POSIX-अनुरूप बना सकता है, तो उन्हें अधिक हल्के प्रोग्राम के साथ व्याख्या करना, जैसे डेबियन अल्मक्विस्ट शेल, किसी का सिस्टम बेहतर प्रदर्शन करेगा। (अंत में, डेबियन को अल्मोक्विस्ट शेल के लिए थोड़ा समायोजन करना पड़ा, गैर-पोसिक्स शेल निर्माणों के एक जोड़े के लिए समर्थन जोड़ने के लिए जो कि बहुत गहराई से और व्यापक रूप से एम्बेडेड थे और छुटकारा पाने के लिए बहुत उपयोगी थे।)

यह सभी का परिणाम बूटस्ट्रैप प्रदर्शन में एक प्रमुख लाभ था।

तो यहाँ विचार करने के लिए शेल के दो अलग-अलग वर्ग हैं:

  • सभी आकर्षक इंटरैक्टिव विशेषताओं वाले गोले , जिन्हें खातों के डेटाबेस में उपयोगकर्ताओं के लिए इंटरैक्टिव लॉगिन गोले के रूप में कॉन्फ़िगर किया गया है।
  • वे शैलें जो बहुत सारी लिपियों की शीघ्रता से व्याख्या करती हैं, जिन्हें शेल स्क्रिप्ट कार्यक्रमों द्वारा स्क्रिप्ट दुभाषियों के रूप में उपयोग किया जाता है ।

ध्यान दें कि इस बारे में "प्राथमिकता /bin/sh" के रूप में बात करना ओवरसिंपलिंग है। डेबियन वास्तव में कम से कम दो लक्ष्य थे:

  1. डेबियन अल्मक्विस्ट शेल, जेड शेल (POSIX मोड में), बॉर्न अगेन शेल (POSIX मोड में), MirBSD कोर्न शेल, और अन्य के रूप में उपयोग करने वाले व्यवस्थापकों के सामने /bin/sh, या तो वहाँ था ...

    1. … स्क्रिप्ट को यथासंभव पोर्टेबल बनाना, ताकि /bin/shचीजों को तोड़ने के लिए मैप किए गए स्विचिंग न हो; या

    2. … गैर-पोर्टेबल स्क्रिप्ट बनाना स्पष्ट रूप से सही दुभाषिया कार्यक्रम को लक्षित करता है , बजाय इसके कि उस /bin/shनक्शे की अपेक्षा के ।

  2. वहाँ डेबियन Almquist के लिए डिफ़ॉल्ट मानचित्रण शैल बनाने था /bin/shबजाय बॉर्न शैल की, ताकि उन स्क्रिप्ट थे POSIX-conformant (या, और अधिक ठीक से, डेबियन नीति मैनुअल अनुरूप) और अधिक तेजी से भाग गया।

और निश्चित रूप से एक बार इस में जाने के बाद, कोई इसे बहुत आगे ले जा सकता है; जैसे कि शेल स्क्रिप्ट और संकलित कार्यक्रमों की पसंद /bin/trueऔर दक्षता वाले ट्रेडऑफ़्स पर विचार करना /usr/bin/clear। लेकिन यह इस उत्तर के दायरे से परे है, सौभाग्य से। ☺

इसमें से कोई भी बहुत नया नहीं है, न ही यूनिक्स-विशिष्ट, बिल्कुल। सदी के मोड़ से पहले, मैंने एक कमांड-लाइन दुभाषिया लिखा और प्रकाशित किया जो "इंटरैक्टिव" और "गैर-इंटरैक्टिव" दोनों प्रकार के स्वादों में आया, इसके डोको में बहुत विभाजन को समझाते हुए COMSPECऔर OS2_SHELLपर्यावरण चर के बीच अंतर को नोट किया । इसी तरह, डेबियन के सिस्टम V में बैशमिज़ को हटाने rcऔर पैकेज स्थापना / हटाने स्क्रिप्ट की चर्चा 1990 के दशक की है।

आगे की पढाई


2
"अंत में, डेबियन को अल्मोक्विस्ट शेल के लिए थोड़ा समायोजन करना पड़ा, गैर-पोसिक्स शेल निर्माणों के एक जोड़े के लिए समर्थन जोड़ने के लिए जो कि बहुत गहराई से और व्यापक रूप से एम्बेडेड थे और छुटकारा पाने के लिए बहुत उपयोगी थे।" - आपके कई लिंक में से किसके बारे में जानकारी है? यह बहुत दिलचस्प लगता है। :)
वाइल्डकार्ड

3
IMHO, प्रदर्शन केवल लोगों को परिवर्तनों से सहमत होने के लिए एक प्रेरक है। बदलने के लिए प्रारंभिक बड़ा कारण यह था कि बैश पीछे की संगतता को तोड़ते रहे। मुझे व्यक्तिगत रूप से अपने करियर में कम से कम 3 बार बैश की समस्याओं को ठीक करना पड़ा है क्योंकि स्क्रिप्ट बैश के एक संस्करण में काम करेगी लेकिन दूसरे में विफल रही (आमतौर पर ओएस अपग्रेड के बाद होती है)। डैश केवल थोड़ा तेज़ दुभाषिया नहीं है। यह व्यवहार के मामले में भी अधिक स्थिर है।
स्लीपबेटमैन

मुझे दिलचस्पी होगी कि क्या Schily Bourne Shellआदमी पृष्ठ में टिप्पणियां , देखें schilytools.sourceforge.net/bosh.html लोगों को यह समझने के लिए उपयुक्त है कि पोर्टेबल स्क्रिप्ट कैसे लिखें (यह केवल Bourne Shell features1989 से निर्भर करता है )। मैंने जो किया वह हर वृद्धि का उल्लेख था जो पुराने बॉर्न शेल में नहीं था। BTW: मैं डैश में बशीशों की एक सूची जानने के लिए भी इच्छुक हूं।
शालीनता

8

क्या कोई कारण है कि एक शबंग / बिन / शश के बजाय / बिन / बाश की ओर इशारा करता है?

हाँ। @ मार्को का उत्कृष्ट उत्तर इसे अच्छी तरह बताता है।

मुझे अपने शेबंग में क्या उपयोग करना चाहिए?

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

मेरे सिस्टम पर (Centos 6.6), के shलिए सहानुभूति है bash:

$ ls -l /bin/sh 
lrwxrwxrwx 1 root root 4 Dec  2  2014 /bin/sh -> bash

इसका मतलब यह है कि मैं हमेशा #!/bin/bashअपने शेबबैंग में उपयोग करता हूं जब तक कि मैंने सत्यापित नहीं किया कि मेरी स्क्रिप्ट में बाशिम नहीं हैं।

#!/bin/shआपके लिए शेबंग सेट करके यह वादा कर रहे हैं कि स्क्रिप्ट सभी कार्यान्वयन के साथ काम करेगी sh

यह एक बहुत बड़ा वादा है कि स्क्रिप्ट बैश के साथ काम करेगी।

यहां एक स्क्रिप्ट का एक उदाहरण है shजो सिस्टम के उपयोग के कार्यान्वयन के आधार पर गलत तरीके से व्यवहार करेगा :

#!/bin/sh
n=1
a=$((++n))
echo $n

bashस्क्रिप्ट का उपयोग करते समय प्रिंट होगा:

2

dashस्क्रिप्ट का उपयोग करते समय प्रिंट होगा:

1

यदि मैं उपयोग #!/bin/shकरना चाहता हूं तो मुझे क्या करने की आवश्यकता है?

  • स्क्रिप्ट की जाँच करें checkbashisms- ध्यान दें कि यह सभी बशीम नहीं मिलेगा। यह ऊपर मेरी स्क्रिप्ट में bashism नहीं मिला
  • एक और shकार्यान्वयन का उपयोग करके स्क्रिप्ट का परीक्षण करें । मैं आम तौर पर साथ परीक्षण करता हूं dash, हालांकि मैं उम्मीद करता हूं कि कुछ बशीश या डैशिम्स अभी भी खिसक सकते हैं।

DashAsBinSh पेज उबंटू विकि पर दिलचस्प जानकारी के बहुत सारे है।


6
"अपनी खुद की स्क्रिप्ट लिखते समय, आपको उस सबसे सामान्य बात के लिए शेबंग को इंगित करना चाहिए, जिसके खिलाफ आपने परीक्षण किया है .... शेल्फ़ को #! / Bin / sh पर सेट करके आप वादा कर रहे हैं कि स्क्रिप्ट sh के सभी कार्यान्वयनों के साथ काम करेगी। । " बहुत बढ़िया बिंदु। +1, और आपने मुझे पुनर्विचार किया है कि कैसे मैं भविष्य के लिए अपने शेबांग को लिखूंगा। धन्यवाद! :)
वाइल्डकार्ड 3

2
ठीक है, सभी कार्यान्वयन नहीं /bin/sh; बस POSIX- संगत वाले।
ब्लैकलाइट शाइनिंग

4

शेल स्क्रिप्ट लिखने का एकमात्र शेष कारण, अधिक शक्तिशाली और एर्गोनोमिक भाषा में स्क्रिप्ट के बजाय, यदि स्थापित सॉफ़्टवेयर के अज्ञात सेट के साथ विरासत सिस्टम के लिए पोर्टेबिलिटी किसी अन्य कारक से अधिक महत्वपूर्ण है

/bin/shएक और एकमात्र स्क्रिप्ट दुभाषिया है जो हर उस चीज़ पर उपलब्ध है जो खुद को यूनिक्स कहता है। लेकिन विरासत प्रणालियों के एक बहुत कुछ पर, /bin/shऔर संबंधित उपयोगिताओं भी POSIX.1-1996 "खोल और उपयोगिताओं" कल्पना के अनुरूप नहीं हैं, अकेले कुछ और अधिक आधुनिक चलो। मानक-अनुरूप उपकरण एक वैकल्पिक ऐड-ऑन हैं, जो /usr/xpg4इस तरह के या कुछ गैर-स्पष्ट स्थान पर स्थापित हैं । 1 पोर्टेबल-सब्सेट शेल भाषा की स्क्रिप्टिंग पोसिक्स शेल भाषा की स्क्रिप्टिंग से भी अधिक थकाऊ और त्रुटि-प्रवण है। ( configureयदि आप मुझ पर विश्वास नहीं करते हैं, तो कभी - कभी एक ऑटोकॉन्फ़ जनरेटेड स्क्रिप्ट के माध्यम से पढ़ें । बस सेटअप आपको समझाने के लिए पर्याप्त होना चाहिए।)

लेकिन अगर आप मान सकते हैं कि कोई अन्य स्क्रिप्ट दुभाषिया स्थापित है (जैसे बाश) तो आप मान सकते हैं कि एक बेहतर पटकथा भाषा के लिए दुभाषिया स्थापित है। उदाहरण के लिए, पर्ल, बैश की तुलना में उपलब्ध होने की अधिक संभावना है।

इसलिए, आपको कभी कोई #! /bin/bashस्क्रिप्ट नहीं लिखनी चाहिए , क्योंकि अगर यह विकल्प है, तो बेहतर भाषा भी एक विकल्प है।

1 उदाहरण के लिए, सोलारिस 10 और पुराने ने मूल बॉर्न शेल को भेज दिया /bin/sh। मुझे जानकारी है कि सोलारिस 11 ने इसे ksh93 में अपडेट किया।


3
किसी सिस्टम को बूट करने के लिए आप किस भाषा में स्क्रिप्ट लिखेंगे? या एक SOHO राउटर (सीमित इमबेड सिस्टम) के अंदर? या Android में? उन सभी मामलों में एक शेल उपलब्ध होगा। पर्ल नहीं।

1
आपके उत्तर के सोलारिस संबंधित भागों के बारे में कुछ गलतियाँ हैं। सोलारिस 10 और पुराने पर, POSIX.1-1996 नहीं/bin/sh है , बल्कि वास्तव में एक पूर्व-POSIX वाक्यविन्यास मूल बॉर्न शेल है। इन रिलीज़ के साथ स्क्रिप्ट के लिए बहुत खराब शेबंग बनाता है। Solaris पर पोर्टेबल स्क्रिप्ट का उपयोग होगा जो अन्य OSes पर बहुत पोर्टेबल नहीं होगा। नवीनतम सोलारिस पर, ओरेकल सोलारिस 11 पहली बार 2011 में जारी किया गया, एक आधुनिक है जो हाल ही में POSIX चश्मा का अनुपालन करता है, और इसमें कुछ आधुनिक एक्सटेंशन हैं। #!/bin/sh#!/usr/xpg4/bin/sh/bin/shksh93
jlliagre

1
@BinaryZebra: "ए शेल" उपलब्ध होगा, हाँ। लेकिन बैश जरूरी नहीं है कि शेल (विशेष रूप से एसओएचओ राउटर का उपयोग ashजो कि बिजीबॉक्स के साथ प्रदान किया जाता है), और मुझे लगता है कि zwol सही है कि पर्ल बैश की तुलना में अधिक सामान्यतः उपलब्ध है।
बेन वोइगट

1
@BenVoigt मैं इस वाक्य पर टिप्पणी कर रहा हूं "शेल स्क्रिप्ट लिखने का एकमात्र शेष कारण"। अभी भी कुछ उदाहरण हैं जिन्हें कुछ कार्यों के लिए एक शेल की आवश्यकता है (सभी नहीं)। वे मेरे सिर के ऊपर से कुछ उदाहरण थे। OTOH पर्याप्त मेमोरी वाले सिस्टम (आज के मानकों में लगभग सभी) और पर्ल (या पायथन, या ....) को स्थापित करने वाली पर्याप्त शक्ति काफी त्वरित और आसान है। हालांकि, मैं किसी विशेष शेल की वकालत नहीं कर रहा हूं। मेरी टिप्पणी में आपने कहां पढ़ा है?

2
अपने अत्यधिक मत और अयोग्य दावे से पूरी तरह असहमत हैं कि "यदि bashउपलब्ध है तो बेहतर भाषा है इसलिए आपको कभी भी कोई bashकोड नहीं लिखना चाहिए ।" इसके अलावा, जैसा कि @sixtyfootersdude बताते हैं, आपको हमेशा उपयोग करना चाहिए #!/bin/bashजब तक कि आपने परीक्षण नहीं किया है कि आपकी स्क्रिप्ट किसी भी PIXIX शेल के साथ काम करती है।
वाइल्डकार्ड

0

आपको वास्तव में या तो उपयोग करना चाहिए

#! /bin/env sh

या

#! /bin/env bash

इस तरह से आप या तो शेल खोलते हैं जिस तरह से वे उस सिस्टम पर स्थापित हैं।

सुपर सुरक्षित होने के लिए ( जैसे एकल-उपयोगकर्ता रिबूट के मामलों में) shअन्यथा उपयोग करें bash


6
से इस उत्तर : the advantage of #!/usr/bin/env python is that it will use whatever python executable appears first in the user's $PATH. The disadvantage of #!/usr/bin/env python is that it will use whatever python executable appears first in the user's $PATH.यह शायद भी लागू होता है shऔर bash
जूल्स

12
नहीं, आपको #!/bin/envपोर्टेबल स्क्रिप्ट में कुछ भी उपयोग नहीं करना चाहिए । यह मान लेना पूरी तरह से उचित है कि /bin/shमौजूद है और एक काम कर रहा है, POSIX- आज्ञाकारी खोल। दूसरी ओर, मेरे सिस्टम में से कोई भी नहीं है /bin/env
ब्लैकलाइट शाइनिंग

एक अच्छी बात भी।
जूल्स

1
@ ब्लेकलाइट शाइनिंग निश्चित रूप से POSIX अनुरूप शेल मान लेना गलत है /bin/sh। POSIX को इसकी आवश्यकता नहीं है, बल्कि POSIX प्रमाणित प्लेटफॉर्म पर POSIX अनुरूप वातावरण प्राप्त करने के लिए अन्य नियमों को परिभाषित करता है।
शाब्दिक

4
/usr/bin/envसार्वभौमिक रूप से उपलब्ध नहीं है ...
वॉनब्रांड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.