2009-02-05 3 views
5

मैंने Google की खोज की लेकिन इस सरल प्रश्न का उत्तर नहीं मिला। (! #) मैं एक अजगर स्क्रिप्ट हैश धमाके पहली पंक्ति पर है कि है:# का पसंदीदा तरीका! खोल स्क्रिप्ट में

#!/usr/bin/python 

हालांकि, इस अगर/bin/अजगर में अजगर के साथ एक कंप्यूटर पर चलाया जाता है या/usr/स्थानीय/बिन/पायथन, या कुछ अन्य जगह? एक शेल स्क्रिप्ट के लिए दुभाषिया सेट करने के लिए एक बेहतर तरीका होना चाहिए। इसे $ PATH के माध्यम से सेट करना संभव होना चाहिए, क्योंकि यह पता चलेगा कि सिस्टम पर इंस्टॉल होने पर पाइथन कहां मिलना है।

उत्तर

12

env का उपयोग करें।

#!/usr/bin/env python 

यह बुलेटप्रूफ नहीं है, लेकिन इसमें/usr/bin/python से अधिक मामलों को शामिल किया गया है।

+0

मुझे नहीं पता था कि env ने ऐसा किया था! लेकिन, यह एक मामूली सुरक्षा जोखिम है - एक दुर्भावनापूर्ण उपयोगकर्ता अपना स्वयं का द्विआधारी कोड ./python में रख सकता है और लक्ष्य उपयोगकर्ता के रूप में कार्यवाही निष्पादित कर सकता है जब भी उपयोगकर्ता "।" अपने $ PATH में इस हैश-बैंग लाइन के साथ एक पायथन लिपि चलाता है। –

+0

आपकी बाइनरी के लिए पाथ खोजना सामान्य है। आपके परिदृश्य में समस्या यह है कि उपयोगकर्ता के पास "।" है उनके पथ में, नहीं कि वे आदेश चलाने के लिए खोल निर्मित पैथ का उपयोग कर रहे हैं। –

+0

@ फिल: सिद्धांत रूप में मैं सहमत हूं कि समस्या $ पाथ के साथ है, लेकिन व्यावहारिक रूप से, यदि उपयोगकर्ता आमतौर पर यह गलती करते हैं तो कुछ हद तक इसे अनदेखा करने के लिए गैर जिम्मेदार है। –

4

उपयोग

#!/usr/bin/env python 

env लगभग हमेशा /usr/bin में है, और PATH में किसी भी प्रोग्राम को निष्पादित करेंगे।

3

कुछ लोगों के साथ शुरू करने के लिए पसंद करते हैं:

#!/usr/bin/env python 

सुनिश्चित नहीं हैं कि यह एक विशाल सुधार है अब आप यह सोचते हैं कर रहे हैं कि अजगर रास्ते में है और यह सही संस्करण है कि है, लेकिन यह एक विकल्प के रूप में।