जवाबों:
कुछ लोग सिस्टम की तुलना में एक अलग अजगर (पर्ल, आदि) का उपयोग कर सकते हैं। /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: आपको एक पूर्ण पथ निर्दिष्ट करने की आवश्यकता है।