শেবাংয়ে এনভিভি ব্যবহার করবেন কেন?


19

#!/usr/bin/env <sh|bash|python>তুলনায় শেবাং ব্যবহারের উদ্দেশ্য কী #!/bin/bash, #!/bin/shবা #!/usr/bin/python?


4
এনভির সাধারণ ব্যবহারের ক্ষেত্রে এখানে একটি ভাল উত্তর রয়েছে ।
কেভিন বোয়েন

উত্তর:


11

কিছু লোক সিস্টেমের চেয়ে পৃথক পাইথন (পারল ইত্যাদি) ব্যবহার করতে পারে। /usr/bin/env pythonসম্ভবত বর্তমানটি হিসাবে কনফিগার করা সংস্করণটি চালাবে, সম্ভবত স্ক্রিপ্টটি আরও বহনযোগ্য making

অন্যদিকে, কথিত, কিছু সিস্টেমে নেই /usr/bin/env। এছাড়াও, আপনি এর #!/usr/bin/env foo xপ্রতিস্থাপন হিসাবে ব্যবহার করতে পারবেন না #!foo x, কারণ foo xএটি একটি একক যুক্তি হিসাবে ব্যাখ্যা করা হবে। সুতরাং পদ্ধতির মান বিতর্কযোগ্য।


1
কোথায় কনফিগার করা হয়েছে? থেকে info coreutils 'env invocation'আমি তোলে কলিং এই ফর্মটি দেখতে পারেন নিশ্চিত করুন যে এটি বিল্ট-ইন শেল পরিবর্তে বাইরের বাইনারি, কিন্তু কোন ইঙ্গিত কিভাবে env pythonথেকে কোন আলাদা হতে হবে python?
টুমিনয়েড

4
আপনার PATHসম্ভবত /usr/local/binপ্রথম অন্তর্ভুক্ত । সেখানে যদি কেউ ম্যানুয়ালি পাইথন ইনস্টল করে থাকে তবে সেটিকে envকল করবে, যেখানে #!/usr/bin/pythonএটি বাইপাস করবে।
রবি বাসাক

2
virtualenvএটি বেশ জনপ্রিয় একটি সরঞ্জাম এবং এটি ওয়ার্কিং ডিরেক্টরিতে একটি অজগরকে এক্সিকিউটেবল ইনস্টল করে। envএটি সঠিকভাবে কাজ করতে আপনার কৌশলটির প্রয়োজন হবে।
ফ্লাইম

2
@Tuminoid: আপনি ঠিক: env pythonহিসাবে একই python। তবে সমস্যাটি হ'ল আপনি শেবাং এর মতো লিখতে পারবেন না #!python: আপনাকে একটি পুরো পথ নির্দিষ্ট করতে হবে।
Andrea Corbellini
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.