কি শ
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একটি খুব সংক্ষিপ্ত প্রোগ্রামিংয়ের ভাষা।