এটি চলে কারণ ডিফল্টরূপে এক্সিকিউটেবল ফাইলটি / বিন / শ স্ক্রিপ্ট হিসাবে ধরে নেওয়া হয়। অর্থাৎ আপনি যদি কোনও নির্দিষ্ট শেল নির্দিষ্ট না করেন - এটি #! / বিন / শ
// টি কেবল পাথগুলিতে উপেক্ষা করা হয় - আপনি বিবেচনা করতে পারেন হিসাবে এটি '/' হিসাবে একা।
সুতরাং আপনি বিবেচনা করতে পারেন যে আপনার কাছে প্রথম লাইনের শেল স্ক্রিপ্ট রয়েছে:
/usr/bin/env go run $0 $@ ; exit
এই লাইনটি কি করে? এটি প্যারামেন্টারদের 'গো রান $ 0 $ @' দিয়ে 'এনভি' চালায়। সেখানে 'গো' কমান্ড রয়েছে এবং 'রান $ 0 $ @' টি আর্গগুলি রয়েছে এবং পরে স্ক্রিপ্টটি প্রস্থান করে। Script 0 এই স্ক্রিপ্টটির নাম। $ @ হ'ল মূল স্ক্রিপ্ট আর্গুমেন্ট। সুতরাং এই লাইন চলুন যা এই আর্গুমেন্ট দিয়ে এই স্ক্রিপ্ট চালায়
মন্তব্যে নির্দেশিত হিসাবে বেশ আকর্ষণীয় বিশদ রয়েছে, যে দুটি স্ল্যাশ বাস্তবায়ন-সংজ্ঞায়িত এবং এই স্ক্রিপ্টটি তিন বা ততোধিক স্ল্যাশ উল্লেখ করলে পসিক্স-সঠিক হয়ে উঠতে পারে। কীভাবে পাথগুলিতে স্ল্যাশ পরিচালনা করা উচিত সে সম্পর্কে বিশদ জানতে http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html দেখুন ।
এটিও নোট করুন যে স্ক্রিপ্টে $ @ পরিবর্তে "$ @" ব্যবহার করা সঠিক, কারণ অন্যথায় যদি কোনও প্যারামিটারে ফাঁক থাকে তবে এটি অনেকগুলি পরামিতিগুলিতে বিভক্ত হয়ে যায়। উদাহরণস্বরূপ আপনি "$ @" ব্যবহার না করে স্পেস দিয়ে ফাইলের নামটি পাস করতে পারবেন না
এই বিশেষ স্ক্রিপ্টটি অবশ্যই '//' এর সাথে '/' সমান ধারণাটি নির্ভর করে
//&>/dev/null;x="${0%.*}";[ ! "$x" -ot "$0" ]||(rm -f "$x";cc -o "$x" "$0")&&exec "$x" "$@"
...