কি শ
sh
(বা শেল কমান্ড ল্যাঙ্গুয়েজ) হ'ল পসিক্স স্ট্যান্ডার্ড দ্বারা বর্ণিত একটি প্রোগ্রামিং ভাষা । এটা অনেক বাস্তবায়নের আছে ( ksh88
, dash
, ...)। bash
একটি বাস্তবায়ন হিসাবে বিবেচনা করা যেতে পারেsh
(নীচে দেখুন)।
কারণ sh
একটি স্পেসিফিকেশন, বাস্তবায়ন নয়,/bin/sh
বেশিরভাগ পসিক্স সিস্টেমে প্রকৃত বাস্তবায়নের একটি সিমিলিংক (বা একটি হার্ড লিঙ্ক)।
বাশ কি?
bash
একটি sh
সামঞ্জস্যপূর্ণ বাস্তবায়ন হিসাবে শুরু হয়েছে (যদিও এটি কয়েক বছরের মধ্যে পসিক্স মানকে পূর্বাভাস দেয়), কিন্তু সময়ের সাথে সাথে এটি অনেকগুলি এক্সটেনশন অর্জন করেছে। এর মধ্যে অনেকগুলি এক্সটেনশান বৈধ পসিক্স শেল স্ক্রিপ্টগুলির আচরণ পরিবর্তন করতে পারে, তাই নিজেই bash
কোনও বৈধ পসিক্স শেল নয়। বরং এটি পসিক্স শেল ভাষার একটি উপভাষা।
bash
একটি --posix
স্যুইচ সমর্থন করে , যা এটিকে আরও পসিক্স-অনুবর্তী করে তোলে। এটি POSIX নকল করার চেষ্টা করে যদি এটি হিসাবে ডাকা হয় sh
।
sh = বাশ?
দীর্ঘকাল ধরে, বেশিরভাগ জিএনইউ / লিনাক্স সিস্টেমগুলিতে /bin/sh
নির্দেশ করতে ব্যবহৃত হয় /bin/bash
। ফলস্বরূপ, দুজনের মধ্যে পার্থক্য উপেক্ষা করা প্রায় নিরাপদ হয়ে গিয়েছিল। তবে সম্প্রতি এটি পরিবর্তন হতে শুরু করে।
সিস্টেমগুলির কয়েকটি জনপ্রিয় উদাহরণ যেখানে /bin/sh
দেখায় না/bin/bash
(এবং/bin/bash
উপস্থিতিও নেই) হলেন:
- আধুনিক ডেবিয়ান এবং উবুন্টু সিস্টেম, যা সিমিলিংক করে
sh
থেকে dash
ডিফল্টরূপে;
- ব্যস্তবক্স , যা সাধারণত লিনাক্স সিস্টেম বুট করার সময় অংশ হিসাবে চালিত হয়
initramfs
। এটি ash
শেল বাস্তবায়ন ব্যবহার করে ।
- বিএসডি, এবং সাধারণভাবে কোনও নন-লিনাক্স সিস্টেম। ওপেনবিএসডি ব্যবহার করে
pdksh
, কর্ন শেলের বংশধর। ফ্রিবিএসডি sh
হ'ল মূল ইউনিক্স বোর্ন শেলের বংশধর। সোলারিসের নিজস্ব রয়েছে sh
যা দীর্ঘকাল ধরে পসিক্স-অনুগত ছিল না; হায়রলুম প্রকল্প থেকে একটি বিনামূল্যে বাস্তবায়ন পাওয়া যায় implementation ।
কীভাবে আপনি তা জানতে পারেন /bin/sh
আপনার সিস্টেমে পয়েন্ট রয়েছে ?
জটিলতাটি হ'ল এটি /bin/sh
একটি প্রতীকী লিঙ্ক বা একটি হার্ড লিঙ্ক হতে পারে। যদি এটি একটি প্রতীকী লিঙ্ক হয় তবে এটি সমাধানের একটি পোর্টেবল উপায় হ'ল:
% file -h /bin/sh
/bin/sh: symbolic link to bash
এটি যদি একটি শক্ত লিঙ্ক হয় তবে চেষ্টা করুন
% find -L /bin -samefile /bin/sh
/bin/sh
/bin/bash
প্রকৃতপক্ষে, -L
পতাকাটি প্রতীক এবং হার্ডলিঙ্ক উভয়কেই কভার করে, তবে এই পদ্ধতির অসুবিধাটি হ'ল এটি বহনযোগ্য নয় - জিএনইউ অনুসন্ধান এবং ফ্রিবিএসডি উভয়ই খুঁজে পাওয়া গেলেও পসিক্স বিকল্পটি সমর্থন করার প্রয়োজন হয় না althoughfind
-samefile
সমর্থন করে ।
শেবাং লাইন
শেষ পর্যন্ত, «শেবাং» লাইনটি লিখে কোনটি ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার সিদ্ধান্ত আপনার হাতে।
যেমন
#!/bin/sh
ব্যবহার করবে sh
(এবং যা কিছু ঘটতে পারে),
#!/bin/bash
/bin/bash
এটি উপলভ্য হলে ব্যবহার করবে (এবং কোনও ত্রুটি বার্তা না থাকলে এটি ব্যর্থ হবে)। অবশ্যই, আপনি আরও একটি বাস্তবায়ন নির্দিষ্ট করতে পারেন, যেমন
#!/bin/dash
কোনটি ব্যবহার করতে হবে
আমার নিজের স্ক্রিপ্টগুলির জন্য, আমি sh
নিম্নলিখিত কারণে পছন্দ করি :
- এটি মানসম্মত হয়
- এটি শিখতে অনেক সহজ এবং সহজ
- এটি পসিক্স সিস্টেমের মধ্যে বহনযোগ্য - এমনকি যদি তাদের না ঘটে তবে
bash
তাদের থাকা প্রয়োজনsh
bash
পাশাপাশি ব্যবহার করার সুবিধা আছে । এর বৈশিষ্ট্যগুলি প্রোগ্রামিংকে আরও সুবিধাজনক এবং অন্যান্য আধুনিক প্রোগ্রামিং ভাষায় প্রোগ্রামিংয়ের অনুরূপ করে তোলে। এর মধ্যে স্কোপড স্থানীয় ভেরিয়েবল এবং অ্যারের মতো জিনিস অন্তর্ভুক্ত রয়েছে। সাদামাটা sh
একটি খুব সংক্ষিপ্ত প্রোগ্রামিংয়ের ভাষা।