जवाबों:
कुछ लोग सिस्टम की तुलना में एक अलग अजगर (पर्ल, आदि) का उपयोग कर सकते हैं। /usr/bin/env python
वर्तमान एक के रूप में कॉन्फ़िगर किए गए संस्करण को चलाएगा, संभवतः स्क्रिप्ट को अधिक पोर्टेबल बना देगा।
दूसरी ओर, कथित तौर पर, कुछ प्रणालियों में नहीं है /usr/bin/env
। इसके अलावा, आप #!/usr/bin/env foo x
एक प्रतिस्थापन के रूप में उपयोग नहीं कर सकते #!foo x
, क्योंकि foo x
एक ही तर्क के रूप में व्याख्या की जाएगी। तो दृष्टिकोण का मूल्य बहस का मुद्दा है।
info coreutils 'env invocation'
मैं बनाता बुला के इस रूप को देख सकते हैं यकीन है कि यह निर्मित खोल के बजाय बाहरी बाइनरी है, लेकिन कोई संकेत नहीं है कि कैसे env python
से किसी भी अलग होगा python
?
PATH
शायद /usr/local/bin
पहले शामिल है । अगर किसी ने वहां मैन्युअल रूप से अजगर स्थापित किया है, तो env
इसे कॉल करेगा, जबकि #!/usr/bin/python
इसे बाईपास करेगा।
virtualenv
एक काफी लोकप्रिय उपकरण है, और यह कार्यशील निर्देशिका में एक अजगर निष्पादन योग्य स्थापित करता है। आपको env
इसे सही ढंग से काम करने के लिए चाल की आवश्यकता होगी ।
env python
जैसा है वैसा ही है python
। हालाँकि समस्या यह है कि आप एक शबंग नहीं लिख सकते हैं #!python
: आपको एक पूर्ण पथ निर्दिष्ट करने की आवश्यकता है।