আমি এই সাইটে এই প্রশ্নটি দেখেছি এবং এটি আমাকে এই প্রশ্নটি জিজ্ঞাসা করতে প্ররোচিত করেছে। আমি ইউনিক্সে কথা বলতে চাই একটি এক্সিকিউটেবল এবং শেল স্ক্রিপ্টের মধ্যে পার্থক্য কী?
আমি এই সাইটে এই প্রশ্নটি দেখেছি এবং এটি আমাকে এই প্রশ্নটি জিজ্ঞাসা করতে প্ররোচিত করেছে। আমি ইউনিক্সে কথা বলতে চাই একটি এক্সিকিউটেবল এবং শেল স্ক্রিপ্টের মধ্যে পার্থক্য কী?
উত্তর:
এক্সিকিউটেবল (এক্সিকিউটেবল) এক্সিকিউটেবল বিট সেট সহ যে কোনও ফাইলকে মৃত্যুদন্ড কার্যকর করতে পারে বোঝায় (প্রোগ্রামটির প্রকৃত চলমানটিতে ত্রুটি থাকলেও)।
শেল স্ক্রিপ্ট একটি নির্দিষ্ট ধরণের এক্সিকিউটেবল যা শেল দ্বারা #!একটি দোভাষীকে নির্দিষ্ট করার জন্য নির্দেশ ব্যবহার করে ব্যাখ্যা করা যায়।
একটি স্ক্রিপ্ট একটি ফাইল যা হল:
একটি শেল স্ক্রিপ্ট একটি স্ক্রিপ্ট যার ব্যাখ্যাকারী একটি হল শেল । ইউনিক্স বিশ্বে, "শেল" বলতে শাঁসের পরিবারকে বোঝায় যা বোর্ন শেলের সাথে সাদৃশ্যপূর্ণ ; আধুনিক এই ধরনের শাঁস (ছাই, ব্যাশ, ksh, zsh, ...) সাথে সামঞ্জস্য POSIX শেল মান। আরও সাধারণভাবে, "শেল" শব্দটির মধ্যে অন্যান্য কমান্ড দোভাষী যেমন সিএসএস, টিসিএসসি, ফিশ,…
একটি এক্সিকিউটেবল যে মৃত্যুদন্ড কার্যকর করা যেতে পারে কোন ফাইল। কার্যকরভাবে সম্পাদনযোগ্য হওয়ার জন্য, একটি ফাইলের দুটি বৈশিষ্ট্য থাকা দরকার:
ls -l: xঅনুমতি কলামে অক্ষরটি উপস্থিত থাকতে হবে।ফাইলটির ফর্ম্যাটটি অবশ্যই এমন এক হওয়া উচিত যা সিস্টেম নির্বাহযোগ্য হিসাবে স্বীকৃত। এক্সিকিউটেবল ফর্ম্যাটগুলি কয়েকটি বিভাগে বিভক্ত করা যায়:
#!একটি ফাইলের পথ অনুসরণ করা হয় path এই জাতীয় কোনও ফাইল কার্যকর করার জন্য, কার্নেল ইন্টারপ্রেটার প্রোগ্রামটি চালায় এবং এটিকে আর্গুমেন্ট হিসাবে স্ক্রিপ্টের পথে দেয়।মনে রাখবেন যে এক্সিকিউটেবল হওয়া সিস্টেমের উপর নির্ভরশীল। উদাহরণস্বরূপ, একটি এমডি 64 লিনাক্স বাইনারি একটি এমডি 64 লিনাক্স সিস্টেমে এক্সিকিউটেবল তবে 32-বিট সিস্টেমে নয়। অ্যান্ড্রয়েডের জন্য বাইনারি কোনও সাধারণ লিনাক্স ইনস্টলেশনতে কার্যকর হয় না। উইন্ডোজ উপস্থিত থাকলে লিনাক্সে উইন্ডোজ এক্সিকিউটেবল কেবল এক্সিকিউটেবল। একটি স্ক্রিপ্ট যা শুরু #!/usr/local/bin/rubyহয় কেবল তখন সম্পাদনযোগ্য যদি সেখানে কোনও প্রোগ্রাম থাকে /usr/local/bin/ruby।
একটি শেল স্ক্রিপ্ট সাধারণত কার্যকর হয়। তবে এটি কার্যকর করার অযোগ্য হতে পারে, যদি আপনার এটি চালানোর অনুমতি না থাকে। আপনি এখনও এটি দোভাষী (উদাহরণস্বরূপ bash /path/to/script) - এর কাছে স্পষ্টভাবে প্রদান করে এটি ব্যাখ্যা করতে পারেন - "এটি ব্যাখ্যা করুন" "এক্সিকিউট" বলার অভিনব উপায়।
শেল-স্ক্রিপ্ট:
শেল স্ক্রিপ্ট হ'ল কমান্ডের একটি সিরিজ যা শেল দ্বারা ব্যাখ্যা করা হবে (সাধারণত sh বা একটি sh- সামঞ্জস্যপূর্ণ শেল, কখনও কখনও অন্য।)
স্ক্রিপ্ট নামটি করতে পারে, তবে ".sh" বা ".বাশ" বা ".csh" ইত্যাদিতে (শেলটি এটি দ্বারা চালিত হওয়া উচিত হিসাবে একটি ইঙ্গিত প্রদান করা) শেষ হতে পারে না।
স্পষ্টতার জন্য আমি ধরে নেব: স্ক্রিপ্টের নামটি scriptএবং এটি চালু করা উচিত শেলটি bash।
এটি শেলের মধ্যে চালু করার একটি সাধারণ উপায় হ'ল: bash /absolute/path/to/the/scriptবা bash ./relative/path/to/the/script। এইভাবে, এটি এক্সিকিউটেবল বিট সেট করার দরকার নেই, কারণ এটি কেবল বাশ দ্বারা পড়া হয়, যা পরে সামগ্রীটি কার্যকর করে।
এটি আপনার বর্তমান শেল সেশন থেকে: / পরম / পাথ / টু / দ্য / স্ক্রিপ্ট (বা। / সম্পর্কিত / পাথ / টু / স্ক্রিপ্ট) এর সাথে সরাসরি চালু করার অনুমতি দেওয়ার জন্য এটি + x (এক্সিকিউটেবল) সেটও করা যেতে পারে। সাবধানতা: ডিফল্টরূপে, যখন সেভাবে চালু করা হয়, এটি আপনি টাইপ করা শেলের মাধ্যমে বা পিক্সিক্স শেলের মাধ্যমে চালু করা হয় (আচরণটি ওএস নির্ভর করে) তবে এটি সম্ভবত এটি চালানো শেলটি নাও হতে পারে। এজন্য আপনি স্ক্রিপ্টের প্রথম লাইন হিসাবে (এবং হওয়া উচিত) নির্দিষ্ট করতে পারেন: #! / পাথ / থেকে / ভাল / শেল যা আপনার ওএসকে নির্দেশ করে যে স্ক্রিপ্টটি সত্যই পরিবর্তে / প্যাথ / টু / ভাল / শেল দ্বারা চালু করা উচিত।
এক্সিকিউটেবল:
এক্সিকিউটেবল এমন একটি ফাইল যা ব্যবহারকারী (গুলি) / গোষ্ঠী (গুলি) এর জন্য "x" বিট সেট করে যার দ্বারা এটি চালু করা হয় supposed এটি সাধারণত একটি "বাইনারি" বা স্ক্রিপ্ট হতে পারে।
টিপ: file /some/fileফাইলের বিষয়বস্তু সম্পর্কে আপনাকে আরও কিছু বলতে পারে। চেষ্টা করুন file /usr/bin/bashবা file /etc/profileকয়েকটি উদাহরণ দেখুন।