আরেকটি উপায় হ'ল দোভাষীকে কল করা এবং স্ক্রিপ্টের দিকে পথটি পাঠানো:
/bin/sh /path/to/script
বিন্দু এবং উত্স সমতুল্য। (সম্পাদনা: না, তারা নয়: কেইথবি অন্য উত্তরে একটি মন্তব্যে উল্লেখ করেছে, "।" কেবল বাশ সম্পর্কিত শেলগুলিতে কাজ করে, যেখানে "উত্স" বাশ এবং সিএসএস সম্পর্কিত উভয় শেলগুলিতে কাজ করে।) এটি স্ক্রিপ্টটি সম্পাদন করে -প্লেস (যেন আপনি ঠিক সেখানে স্ক্রিপ্ট অনুলিপি করে আটকালেন)। এর অর্থ হ'ল স্ক্রিপ্টে কোনও ফাংশন এবং অ-স্থানীয় ভেরিয়েবল রয়ে গেছে। এর অর্থ হ'ল স্ক্রিপ্টটি যদি কোনও ডিরেক্টরিতে সিডি করে, আপনি এটি সম্পন্ন করার পরেও সেখানে থাকবেন।
স্ক্রিপ্ট চালানোর অন্যান্য উপায়গুলি এটির নিজস্ব সাবশেলে চালাবে। স্ক্রিপ্টের ভেরিয়েবলগুলি সম্পূর্ণ হয়ে গেলে এখনও বেঁচে থাকে না। যদি স্ক্রিপ্ট ডিরেক্টরি পরিবর্তন করে, তবে এটি কলিং পরিবেশকে প্রভাবিত করে না।
/ পাথ / টু / স্ক্রিপ্ট এবং / বিন / শ স্ক্রিপ্ট কিছুটা আলাদা। সাধারণত, কোনও স্ক্রিপ্টের শুরুতে একটি "শেবাং" থাকে যা দেখতে এরকম দেখায়:
#! /bin/bash
এটিই স্ক্রিপ্ট ইন্টারপ্রেটারের পথ। এটি কার্যকর করার সময় যদি এটি আপনার থেকে আলাদা কোনও দোভাষীকে নির্দিষ্ট করে, তবে এটি অন্যরকম আচরণ করতে পারে (বা কিছুতেই কাজ নাও করতে পারে)।
উদাহরণস্বরূপ, পার্ল স্ক্রিপ্টস এবং রুবি স্ক্রিপ্টগুলি (যথাক্রমে) দিয়ে শুরু হয়:
#! /bin/perl
এবং
#! /bin/ruby
আপনি যদি এই স্ক্রিপ্টগুলির মধ্যে একটি চালনা করে চালিয়ে যান /bin/sh script
তবে সেগুলি মোটেই কার্যকর হবে না।
উবুন্টু আসলে ব্যাশ শেলটি ব্যবহার করে না, তবে ড্যাশ নামে পরিচিত একটি খুব অনুরূপ। ব্যাশ প্রয়োজন এমন স্ক্রিপ্টগুলি যখন ডেকে ডাকা হয় তখন কিছুটা ভুল কাজ করতে পারে /bin/sh script
কারণ আপনি ড্যাশ ইন্টারপ্রেটার ব্যবহার করে কেবল ব্যাশ স্ক্রিপ্ট কল করেছেন।
সরাসরি স্ক্রিপ্টটি কল করা এবং দোভাষীকে স্ক্রিপ্টের পথটি প্রেরণের মধ্যে আরেকটি ছোট পার্থক্য হ'ল স্ক্রিপ্টটি সরাসরি চালনার জন্য নির্বাহযোগ্য হিসাবে চিহ্নিত করা উচিত, তবে দোভাষীকে পথ দিয়ে চালানো নয়।
আরেকটি ছোটখাটো প্রকরণ: আপনি স্ক্রিপ্টটি ওয়াল দিয়ে কার্যকর করতে এই যে কোনও উপায়ে উপসর্গ করতে পারেন, সুতরাং আপনি তা করতে পারেন
eval sh script
eval script
eval . script
ইত্যাদি। এটি আসলে কোনও পরিবর্তন করে না, তবে আমি ভেবেছিলাম এটি সম্পূর্ণতার জন্য অন্তর্ভুক্ত করব।