আমি কয়েকটি শেল স্ক্রিপ্ট টিউটোরিয়াল দিয়ে যাচ্ছিলাম এবং নিম্নলিখিত নমুনা প্রোগ্রামটি পেয়েছি:
#!/bin/sh
clear
echo "HELLO WORLD"
কেউ দয়া করে আমাকে বলতে পারেন #!/bin/sh
শুরুতে মন্তব্যটির তাত্পর্যটি কী?
আমি কয়েকটি শেল স্ক্রিপ্ট টিউটোরিয়াল দিয়ে যাচ্ছিলাম এবং নিম্নলিখিত নমুনা প্রোগ্রামটি পেয়েছি:
#!/bin/sh
clear
echo "HELLO WORLD"
কেউ দয়া করে আমাকে বলতে পারেন #!/bin/sh
শুরুতে মন্তব্যটির তাত্পর্যটি কী?
উত্তর:
এটিকে শেবাং বলা হয় এবং স্ক্রিপ্টটি কার্যকর করতে কোন দোভাষী ব্যবহার করা উচিত তা পিতামাতাকে বলে tells
যেমন
#!/usr/bin/perl <--perl script'
#!/usr/bin/php <-- php script
#!/bin/false <--- do-nothing script, because false returns immediately anyways.
এটি একটি মন্তব্য হিসাবে কার্যকর করা হয়েছে যাতে সেই লাইনে যে কোনও কিছুই নির্দিষ্ট করা দোভাষীটির সাথে "প্রাসঙ্গিক" না হয়। উদাহরণস্বরূপ, সমস্ত স্ক্রিপ্টিং ভাষার বোঝার প্রবণতা রয়েছে যে শুরু হওয়া একটি লাইন #
একটি মন্তব্য, এবং !/usr/bin/whatever
অংশটিকে উপেক্ষা করবে , যা অন্যথায় particular নির্দিষ্ট ভাষায় একটি বাক্য গঠন ত্রুটি হতে পারে।
exec()
ফাইলটিতে সিস্টেমে কল দেয়।
আপনি যখন ইউনিক্সে একটি প্রোগ্রাম চালানোর চেষ্টা করবেন (এক্সিকিউটেবল বিট সেট সহ একটি), অপারেটিং সিস্টেমটি ফাইলের প্রথম কয়েকটি বাইট দেখবে। এগুলি তথাকথিত "ম্যাজিক নম্বর" গঠন করে, যা প্রোগ্রামটির ফর্ম্যাট এবং এটি কার্যকর করতে কীভাবে তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।
#!
ম্যাজিক নম্বর 0x2321 এর সাথে মিল রয়েছে (এটি একটি এসিআই টেবিলটিতে দেখুন)। যখন সিস্টেমটি দেখেছে যে ম্যাজিক নম্বরটি, তখন এটি জেনে যায় যে এটি একটি পাঠ্য স্ক্রিপ্ট নিয়ে কাজ করছে এবং পরবর্তী পর্যন্ত পড়বে \n
(একটি সীমা রয়েছে, তবে এটি আমার থেকে দূরে থাকে)। দোভাষীকে সনাক্ত করার পরে (শেবাংয়ের পরে প্রথম যুক্তি) এটি দোভাষীকে ডাকবে।
অন্যান্য ফাইলগুলিতেও ম্যাজিক নম্বর রয়েছে। এর মাধ্যমে একটি বিটম্যাপ (.BMP) ফাইলটি দেখার চেষ্টা করুন less
এবং আপনি প্রথম দুটি অক্ষরটি দেখতে পাবেন BM
। এই ম্যাজিক নম্বরটি বোঝায় যে ফাইলটি আসলে একটি বিটম্যাপ।
যদি এই স্ক্রিপ্টটিতে যে ফাইলটি থাকে তার ফাইল যদি কার্যকর হয় তবে হ্যাশ-ব্যাং ( #!
) অপারেটিং সিস্টেমকে স্ক্রিপ্টটি চালানোর জন্য কোন দোভাষী ব্যবহার করতে হবে তা জানিয়ে দেয়। এই ক্ষেত্রে এটি /bin/sh
উদাহরণস্বরূপ।
আরও তথ্যের জন্য এটি সম্পর্কে একটি উইকিপিডিয়া নিবন্ধ আছে।
প্রথম লাইনটি শেলটিকে বলে যে আপনি যদি স্ক্রিপ্টটি সরাসরি (./run.sh; / bin / sh run.sh এর বিপরীতে) সম্পাদন করেন তবে এর প্রোগ্রামটি (/ বিন / sh এই ক্ষেত্রে ব্যবহার করা উচিত) এটির ব্যাখ্যা করতে।
আপনি এটি আর্গুমেন্টগুলি পাস করার জন্যও ব্যবহার করতে পারেন, সাধারণত - ((ত্রুটি থেকে বেরিয়ে আসা)), বা অন্যান্য প্রোগ্রামগুলি (/ বিন / অ্যাজক, / ইউএসআর / বিন / পার্ল ইত্যাদি) ব্যবহার করতে পারেন।
#!/bin/sh
অথবা #!/bin/bash
স্ক্রিপ্টের প্রথম লাইন হতে হবে কারণ আপনি যদি এটি প্রথম লাইনে ব্যবহার না করেন তবে সিস্টেমটি সেই লিপির সমস্ত কমান্ডকে আলাদা আলাদা কমান্ড হিসাবে বিবেচনা করবে। যদি প্রথম লাইনটি হয় #!/bin/sh
তবে এটি সমস্ত কমান্ডকে একটি স্ক্রিপ্ট হিসাবে বিবেচনা করবে এবং এটি দেখিয়ে দেবে যে এই ফাইলটি ps
কমান্ডের মধ্যে চলছে , ফাইলের অভ্যন্তরে কমান্ডগুলি নয়।
./echo.sh
ps -ef |grep echo
trainee 3036 2717 0 16:24 pts/0 00:00:00 /bin/sh ./echo.sh
root 3042 2912 0 16:24 pts/1 00:00:00 grep --color=auto echo
ps
এবং এর মতো কোড অংশগুলি #!/bin/sh
বিন্যাস করা উচিত।