ইউনিক্সে কথা বলতে শেল স্ক্রিপ্ট এবং এক্সিকিউটেবলের মধ্যে পার্থক্য কী?


9

আমি এই সাইটে এই প্রশ্নটি দেখেছি এবং এটি আমাকে এই প্রশ্নটি জিজ্ঞাসা করতে প্ররোচিত করেছে। আমি ইউনিক্সে কথা বলতে চাই একটি এক্সিকিউটেবল এবং শেল স্ক্রিপ্টের মধ্যে পার্থক্য কী?

উত্তর:


12

এক্সিকিউটেবল (এক্সিকিউটেবল) এক্সিকিউটেবল বিট সেট সহ যে কোনও ফাইলকে মৃত্যুদন্ড কার্যকর করতে পারে বোঝায় (প্রোগ্রামটির প্রকৃত চলমানটিতে ত্রুটি থাকলেও)।

শেল স্ক্রিপ্ট একটি নির্দিষ্ট ধরণের এক্সিকিউটেবল যা শেল দ্বারা #!একটি দোভাষীকে নির্দিষ্ট করার জন্য নির্দেশ ব্যবহার করে ব্যাখ্যা করা যায়।


12

একটি স্ক্রিপ্ট একটি ফাইল যা হল:

  • মানব-পঠনযোগ্য (কমপক্ষে যুক্তিযুক্ত প্রশিক্ষিত মানুষের কাছে, অর্থাত ফাইলটি মুদ্রণযোগ্য অক্ষর দ্বারা গঠিত); এবং
  • একটি দোভাষী দ্বারা প্রোগ্রামের আচরণের বর্ণনা হিসাবে নির্দেশাবলী হিসাবে বোঝা যায় ।

একটি শেল স্ক্রিপ্ট একটি স্ক্রিপ্ট যার ব্যাখ্যাকারী একটি হল শেল । ইউনিক্স বিশ্বে, "শেল" বলতে শাঁসের পরিবারকে বোঝায় যা বোর্ন শেলের সাথে সাদৃশ্যপূর্ণ ; আধুনিক এই ধরনের শাঁস (ছাই, ব্যাশ, ksh, zsh, ...) সাথে সামঞ্জস্য POSIX শেল মান। আরও সাধারণভাবে, "শেল" শব্দটির মধ্যে অন্যান্য কমান্ড দোভাষী যেমন সিএসএস, টিসিএসসি, ফিশ,…


একটি এক্সিকিউটেবল যে মৃত্যুদন্ড কার্যকর করা যেতে পারে কোন ফাইল। কার্যকরভাবে সম্পাদনযোগ্য হওয়ার জন্য, একটি ফাইলের দুটি বৈশিষ্ট্য থাকা দরকার:

  • ব্যবহারকারীর অবশ্যই এটি কার্যকর করার অনুমতি থাকতে হবে। কমান্ডের সাহায্যে এটি দেখা যায় ls -l: xঅনুমতি কলামে অক্ষরটি উপস্থিত থাকতে হবে।
  • ফাইলটির ফর্ম্যাটটি অবশ্যই এমন এক হওয়া উচিত যা সিস্টেম নির্বাহযোগ্য হিসাবে স্বীকৃত। এক্সিকিউটেবল ফর্ম্যাটগুলি কয়েকটি বিভাগে বিভক্ত করা যায়:

    • নেটিভ এক্সিকিউটেবল, যা অপারেটিং সিস্টেমের বাইনারি এক্সিকিউটেবল লেআউট অনুযায়ী মেশিন কোড সমন্বিত থাকে। বেশিরভাগ আধুনিক ইউনিক্স সিস্টেমগুলি তাদের নেটিভ এক্সিকিউটেবলের জন্য ELF ফর্ম্যাটটি ব্যবহার করে।
    • স্ক্রিপ্ট। একটি এক্সিকিউটেবল স্ক্রিপ্ট হ'ল ফাইলটি শেবাং লাইন দিয়ে শুরু হয় , দুটি অক্ষর সমন্বয়ে #!একটি ফাইলের পথ অনুসরণ করা হয় path এই জাতীয় কোনও ফাইল কার্যকর করার জন্য, কার্নেল ইন্টারপ্রেটার প্রোগ্রামটি চালায় এবং এটিকে আর্গুমেন্ট হিসাবে স্ক্রিপ্টের পথে দেয়।
    • সম্ভবত সিস্টেমের উপর নির্ভর করে অন্য ফর্ম্যাটগুলি। উদাহরণস্বরূপ, লিনাক্স বিনফ্যাম্ট_মিস্ক সুবিধার মাধ্যমে স্বেচ্ছাসেবী ফাইল ফর্ম্যাটগুলি নিবন্ধন করতে পারে । এটি জাভা বাইটকোড ফাইলগুলিকে নিবন্ধিত জেভিএম , উইন্ডোজ এক্সিকিউটেবলগুলি ওয়াইন ইত্যাদির মাধ্যমে সম্পাদন করতে দেয় allows

মনে রাখবেন যে এক্সিকিউটেবল হওয়া সিস্টেমের উপর নির্ভরশীল। উদাহরণস্বরূপ, একটি এমডি 64 লিনাক্স বাইনারি একটি এমডি 64 লিনাক্স সিস্টেমে এক্সিকিউটেবল তবে 32-বিট সিস্টেমে নয়। অ্যান্ড্রয়েডের জন্য বাইনারি কোনও সাধারণ লিনাক্স ইনস্টলেশনতে কার্যকর হয় না। উইন্ডোজ উপস্থিত থাকলে লিনাক্সে উইন্ডোজ এক্সিকিউটেবল কেবল এক্সিকিউটেবল। একটি স্ক্রিপ্ট যা শুরু #!/usr/local/bin/rubyহয় কেবল তখন সম্পাদনযোগ্য যদি সেখানে কোনও প্রোগ্রাম থাকে /usr/local/bin/ruby


একটি শেল স্ক্রিপ্ট সাধারণত কার্যকর হয়। তবে এটি কার্যকর করার অযোগ্য হতে পারে, যদি আপনার এটি চালানোর অনুমতি না থাকে। আপনি এখনও এটি দোভাষী (উদাহরণস্বরূপ bash /path/to/script) - এর কাছে স্পষ্টভাবে প্রদান করে এটি ব্যাখ্যা করতে পারেন - "এটি ব্যাখ্যা করুন" "এক্সিকিউট" বলার অভিনব উপায়।


2

শেল-স্ক্রিপ্ট:

শেল স্ক্রিপ্ট হ'ল কমান্ডের একটি সিরিজ যা শেল দ্বারা ব্যাখ্যা করা হবে (সাধারণত 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কয়েকটি উদাহরণ দেখুন।


আপনার বর্তমান শেল দ্বারা চালিত শেবাংলেস স্ক্রিপ্টগুলি সম্পর্কে আপনার বক্তব্য ভুল। আচরণটি ওএস নির্ভর। সাধারণত, হয় পসিক্স শেল বা আপনার লগইন শেল ব্যবহার করা হয়।
jlliagre

এই নির্ভুলতার জন্য ধন্যবাদ। আমি আপনার মন্তব্য যুক্ত করতে আমার উত্তর সম্পাদনা করব।
অলিভিয়ার ডুলাক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.