शेल स्क्रिप्ट के स्रोत के लिए फ़ाइल एक्सटेंशन के लिए एक आधिकारिक मानक / सम्मेलन


12

मैं सोच रहा था कि क्या शेल स्क्रिप्ट के लिए फ़ाइल प्रकार एक्सटेंशन के लिए एक कन्वेंशन है जो आप रन के बजाय स्रोत करना चाहते हैं। उदाहरण के लिए:

  1. अगर मैं इस स्क्रिप्ट को एक सब-टाइम में चलाना चाहता हूँ।

    ./script.sh 
  2. यदि मैं इस स्क्रिप्ट को वर्तमान शेल से चलाने के लिए याद रखना चाहता हूं।

    . script.source 

क्या दूसरे उदाहरण में एक फिलामेंट के लिए एक सम्मेलन (उदाहरण के लिए POSIX) है? कुछ ऐसा .sourceया .sourceme?


अपडेट करें

यह सवाल कोई राय नहीं पूछता है। मैंने स्पष्ट रूप से कहा था कि मैं यह जानना चाहूंगा कि क्या इस तरह की स्क्रिप्ट के लिए एक मानकीकृत फ़ाइल एक्सटेंशन है। यह सवाल एक समान मुद्दे पर इस अच्छी तरह से प्राप्त प्रश्न से भी कम राय-आधारित है ( बैन स्क्रिप्ट के लिए .sh या .bash एक्सटेंशन का उपयोग करें? )।


1
कुछ लोग सोचते हैं कि शेल स्क्रिप्ट जो एक निष्पादनयोग्य चला सकते हैं (यानी वे जिसके साथ शुरू होते हैं #!/bin/shया इसी तरह का कोई विस्तार नहीं होना चाहिए, क्योंकि उपयोगकर्ता को इस बात की परवाह नहीं करनी चाहिए कि अंतर्निहित स्क्रिप्ट किस भाषा में लिखी गई है।
the_velour_fog

1
निर्भर करता है कि यह किस लिए है, आप env, rc, conf आदि कर सकते हैं
123

1
@ 123 यह निर्भर करता है, कभी कभी एक बार आप कुछ thats उपयोगी बनाने और इसे में डाल दिया $PATH, तो आप ऐसा अपने की तरह, हर समय का उपयोग करने के लिए आ ps, ls, curlऔर अन्य सभी आदेशों, तो आप उसके चारों ओर का निर्माण पूरा होने के खोल कार्यों के लिए शुरू करते हैं, मुझे लगता है एक्सटेंशन को छोड़ना ठीक है। लेकिन हां, जब आप एक शेल स्क्रिप्ट सोर्स कर रहे होते हैं, जो कि खुद के द्वारा निष्पादित नहीं होती हैं, तो मैं chmod +xउन्हें नहीं करूंगा, और मैं उनका नाम लूंगा script.sh। मैं भी अक्सर विशुद्ध रूप से एक एक्सटेंशन असाइन करता हूं क्योंकि अगर मैं नहीं करता हूं तो मुझे अपने संपादक पर वाक्य रचना हाइलाइटिंग नहीं मिलेगी।
the_velour_fog

5
कोई सम्मेलन नहीं है। यदि आप किसी कंपनी में हैं या यदि आप किसी शेयर प्रोजेक्ट (जैसे ओपनसोर्स) में सहयोग कर रहे हैं, तो आपके पास इसके अनुरूप स्थानीय मानक हो सकते हैं, लेकिन कोई वास्तविक तथ्य नहीं है।
स्टीफन हैरिस

1
शब्द "कन्वेंशन" (अर्थ # 2) वह है जो संभवतः "राय-आधारित" उत्तरों की ओर अग्रसर है। स्रोत के लिए खुला समूह कल्पना किसी भी नामकरण मानक लागू नहीं करता है।
जेफ स्कालर

जवाबों:


18

मैं उपयोग करूँगा .sh( गैर-श-संगत फ़ाइलों के लिए sh, POSIX भाषा में फ़ाइलों के लिए, यही वह विस्तार है कि जिस भाषा में स्क्रिप्ट लिखी जाती है, उसकी पहचान खटाई में डालने वाली फ़ाइलों के लिए होती है) (या आमतौर पर निष्पादित होने का इरादा नहीं), और उन फ़ाइलों के लिए कोई एक्सटेंशन नहीं जिन्हें निष्पादित किया जाना है।.bashbash

आप यह भी जोड़ सकते हैं:

#! /bin/echo Please-source

वह-बैंग, ताकि गलती से निष्पादित होने पर (हालांकि मुझे उम्मीद है कि उन फ़ाइलों को निष्पादन की अनुमति नहीं दी जानी चाहिए, जो पहले से ही निष्पादन को रोकेंगी), आपको एक नोटिस मिलता है कि इसके बजाय इसे सॉर्ट किया जाना चाहिए।


स्क्रिप्ट
Mateusz Piotrowski

4

स्रोत फ़ाइलों के मामले में, मुझे लगता है कि सबसे अच्छा तरीका है उन फ़ाइलों के लिए .conf जो आपकी स्क्रिप्ट और .shlib और .shlib को उन फ़ाइलों के लिए कॉन्फ़िगर करती हैं, जिनमें फ़ंक्शंस या अन्य बर्तन हैं।

यदि आप अपनी स्क्रिप्ट को गलत शेल के साथ चलने से रोकना चाहते हैं, और हैशबैंग आपके लिए पर्याप्त नहीं है, तो आप इसका उपयोग कर सकते हैं:

if [ "$(readlink "/proc/$$/exe")" != "/bin/bash" ]; then
      echo >&2 "CAUTION: Wrong interpreter detected. You must use bash."
      exit 1
fi

1
यदि आप लिनक्स-विशिष्ट का उपयोग करने जा रहे हैं /proc/$$/exe, तो आप इसे वैसे ही कर सकते हैं case $(readlink "/proc/$$/exe") in */bash)..., हालांकि यहाँ, मैं बस उपयोग करूँगा if [ -z "$BASH_VERSION" ]:। ( echoहोना चाहिए echo >&2)। (मैं आपको .confया .shlibs(लेकिन श फाइलों के लिए) एक्सटेंशन पसंद करता हूं, हालांकि यह सिंटैक्स हाइलाइटर्स की मदद नहीं कर सकता है जो एक्सटेंशन पर भरोसा करते हैं)।
स्टीफन चेज़लस

हाँ, मुझे यह दिखाई देता है .llibs, किसी तरह के प्रोग्राम में, जिसे मैं डोनलोड करता हूं, लेकिन मुझे याद नहीं है, इसलिए मैंने इसका उपयोग करना शुरू कर दिया। टिप के लिए बहुत-बहुत धन्यवाद, मैं इस प्रश्न को रीडलिंक संस्करण के साथ और अधिक सुंदर रूप से संपादित करूंगा। ;-)
लुसियानो एंड्रेस मार्टिनी 13

@ स्टीफनचेलजेलस सिंटैक्स हाइलाइटिंग को मेटा-डेटा के माध्यम से फाइलों में स्वयं (कम से कम एमाक्स और विम) के लिए ट्रिगर किया जा सकता है, इसलिए फ़ाइल एक्सटेंशन का चुनाव उस संबंध में अप्रासंगिक है।
Kusalananda
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.