"Sh সামঞ্জস্যপূর্ণ" হওয়ার অর্থ কী?


63

আমি শেলগুলির প্রসঙ্গে সাধারণত ব্যবহৃত "sh সুসংগত" শব্দটি দেখেছি। আমি নিশ্চিত নই যে এটি শেলগুলির মধ্যে থেকে চালিত হতে পারে এমন প্রোগ্রামগুলিতেও প্রযোজ্য কিনা।

শেল বা অন্যান্য প্রোগ্রাম "শ সুসংগত" হওয়ার অর্থ কী? "Sh বেমানান" হওয়ার অর্থ কী?

সম্পাদনা: বাশ এবং শ এর মধ্যে পার্থক্য জিজ্ঞাসা করা এই প্রশ্নটি অত্যন্ত প্রাসঙ্গিক: শ এবং বাশের মধ্যে পার্থক্য

আমি "শ উপযোগী" হওয়ার অর্থ কী তার সরাসরি উত্তর চাই। একটি যুক্তিসঙ্গত প্রত্যাশা হতে পারে যে "শ সামঞ্জস্যপূর্ণ" এর অর্থ "শেল কমান্ড ল্যাঙ্গুয়েজ প্রয়োগ করে" তবে তারপরে কেন এতগুলি "এসএইচ সামঞ্জস্যপূর্ণ" শেল রয়েছে এবং কেন সেগুলি আলাদা?


1
শেল স্ক্রিপ্টের জন্য, এটি স্ক্রিপ্টটি বোর্ন শেল ( sh) এর সাথে সিনট্যাক্স সামঞ্জস্যপূর্ণ (চলমান) ব্যবহার করে কিনা তা বোঝায় । ভিন্ন শেলের জন্য, এটি শেলটি বোর্ন শেল স্ক্রিপ্টগুলি চালাতে পারে কিনা তা বোঝায়।
HalosGhost

আপনি শাঁস উদ্ভাবক জানতে চান আপনি এ আমার উত্তর পরিদর্শন করতে পারেন unix.stackexchange.com/questions/45684/...
PersianGulf

উত্তর:


116

কেন এতগুলি "এসএস সুসংগত" শেল রয়েছে?

বোর্ন শেল প্রথম প্রকাশ্যে অংশ হিসেবে 1979 সালে মুক্তি পায় ইউনিক্স V7 । যেহেতু প্রতিটি ইউনিক্স এবং ইউনিক্সের মতো সিস্টেম ভি 7 ইউনিক্স থেকে নেমে আসে - এমনকি কেবল আধ্যাত্মিকভাবেই - বর্ন শেলটি আমাদের সাথে "চিরকাল" রয়েছে ¹

বোর্ন শেলটি আসলে একটি পূর্বের শেলটি প্রতিস্থাপন করেছিল, থম্পসন শেলটি পুনঃপ্রেরণা করেছিল , তবে ইউনিক্সের ইতিহাসে এত তাড়াতাড়ি ঘটেছিল যা আজ সব ভুলে গেছে। বোর্ন শেল থম্পসন শেলের একটি সুপারস্টার ²

বোর্ন এবং থম্পসন উভয় শেল কল করা হয়েছিল shশেল POSIX দ্বারা নির্দিষ্ট এছাড়াও বলা হয় sh। সুতরাং, যখন কেউ- shসামঞ্জস্যপূর্ণ বলে , তারা হাতের মুঠোয় শেলগুলির এই সিরিজটি উল্লেখ করছে। যদি তারা সুনির্দিষ্ট হতে চায় তবে তারা "পসিক্স শেল" বা "বোর্ন শেল" বলতে চাই say ³

পসিক্স শেলটি কর্নশেলের 1988 সংস্করণের উপর ভিত্তি করে তৈরি হয়েছিল , যার পরিবর্তে এটিটি এন্ড টিটি ইউনিক্সে বোর্ন শেলটি প্রতিস্থাপন করা হয়েছিল, বিএসডি সি শেলটিকে বৈশিষ্ট্যের দিক দিয়ে লাফিয়ে ফেলা হয়েছিল ⁴ পসিক্স শেলেরksh পূর্বপুরুষ যে পরিমাণে ইউনিক্স এবং ইউনিক্সের মতো সিস্টেমগুলিতে আজ কর্ন শেলের কিছু বৈকল্পিক অন্তর্ভুক্ত। ব্যতিক্রমগুলি সাধারণত ক্ষুদ্র এমবেডেড সিস্টেমগুলি হয়, যা পুরো পসিক্স শেল গ্রহণের জন্য জায়গাটি বহন করতে পারে না।

এটি বলেছিল, কর্ন শেল - পসিক্স শেল থেকে পৃথক একটি জিনিস হিসাবে - বাণিজ্যিক ইউনিক্স বিশ্বের বাইরে সত্যই কখনও জনপ্রিয় হয়ে উঠেনি। কারণ এটির উত্থানটি ইউনিক্স বাণিজ্যিকীকরণের প্রথম বছরগুলির সাথে মিল ছিল, তাই এটি ইউনিক্স যুদ্ধে জড়িয়ে পড়ে । বিএসডি ইউনিক্সগুলি এটিকে শেলটির পক্ষে রেখেছিল এবং এটির উত্স কোডটি লিনাক্সে শুরু করার সময় অবাধে ব্যবহারের জন্য উপলব্ধ ছিল না ⁵ সুতরাং, যখন প্রাথমিক লিনাক্স ডিস্ট্রিবিউটররা তাদের লিনাক্স কার্নেলের সাথে যেতে একটি কমান্ড শেল সন্ধান করতে চলেছিলেন, তারা সাধারণত জিএনইউsh বাশকে বেছে নিয়েছিল, আপনি যেসব কম্প্যাটিবেবলের কথা বলছেন তার মধ্যে একটি ⁶

Linux এবং ব্যাশ মধ্যে যে প্রাচীন সমিতি প্রায় কাছাকাছি সহ অন্যান্য অনেক শেল, ভাগ্য সিল ksh, cshএবং tcsh। আজও এই শেলগুলি ব্যবহার করে ডাই-হার্ডস রয়েছে, তবে তারা সংখ্যালঘুতে অনেক বেশি ⁷

এই সমস্ত ইতিহাস ব্যাখ্যা দিয়েছে কেন মত আপেক্ষিক latecomers এর নির্মাতাদের bash, zshএবং yashতাদের জন্য বেছে sh-compatible: বোর্ন / POSIX সামঞ্জস্য ন্যূনতম ইউনিক্সের মত সিস্টেমের জন্য একটি শেল অর্ডার ব্যাপক গ্রহণ লাভ প্রদান করতে হবে।

অনেক সিস্টেমে ডিফল্ট ইন্টারেক্টিভ কমান্ড শেল এবং /bin/shবিভিন্ন জিনিস। /bin/shহতে পারে:

  • আসল বোর্ন শেল পুরানো ইউনিক্সI সিস্টেমে এটি সাধারণ, যেমন সোলারিস 10 (2005 সালে প্রকাশিত) এবং এর পূর্বসূরীরা ⁸

  • একটি পসিক্স-শংসিত শেল। সোলারিস 11 (2010) এর মতো নতুন ইউনিক্স সিস্টেমে এটি সাধারণ।

  • Almquist শেল । এটি একটি ওপেন সোর্স বোর্ন / পসিক্স শেল ক্লোনটি মূলত ১৯৯৯ সালে ইউজনেটে ​​প্রকাশিত হয়েছিল, যার পরে বার্কলে সিএসআরজিকে প্রথম বিএসডি রিলিজের অন্তর্ভুক্তির জন্য এটিটি এবং টি সোর্স কোড, ৪.৪ বিএসডি লাইট নেই । অ্যালকুইস্ট শেলটি প্রায়শই বলা হয় ash, এমনকি ইনস্টল করা অবস্থায়ও /bin/sh

    ৪.৪ বিএসডি-লাইট পরিবর্তে সমস্ত আধুনিক বিএসডি ডেরিভেটিভসের বেস হয়ে উঠেছে, যার /bin/shবেশিরভাগ ক্ষেত্রে অ্যালকুইস্ট ডেরিভেটিভ হিসাবে বাকী রয়েছে, যার মধ্যে একটি উল্লেখযোগ্য ব্যতিক্রম নীচে উল্লিখিত রয়েছে। নেটবিএসডি এবং ফ্রিবিএসডি- র উত্স কোড সংগ্রহস্থলগুলিতে আপনি এই প্রত্যক্ষ বংশধর দেখতে পাচ্ছেন : তারা প্রথম দিন থেকে একটি অ্যালকুইস্ট শেল ডেরিভেটিভ শিপিং করছিল।

    ashবিএসডি বিশ্বের বাইরে দুটি গুরুত্বপূর্ণ কাঁটাচামচ রয়েছে:

    1. dash, 2006 সালে ডেবিয়ান এবং উবুন্টু বিখ্যাত হিসাবে ডিফল্ট /bin/shবাস্তবায়ন হিসাবে গ্রহণ করেছিলেন। (ড্যাশিয়ান ডেরিভেটিভগুলিতে বাশ ডিফল্ট ইন্টারেক্টিভ কমান্ড শেল হিসাবে রয়ে গেছে ))

    2. ashকমান্ড মধ্যে busybox , যা ঘন ঘন এমবেডেড Linuxes ব্যবহার করা হয় এবং প্রয়োগ করতে ব্যবহৃত হতে পারে /bin/sh। যেহেতু এটি পোস্টের তারিখগুলি dashএবং এটি ডেবিয়ানের পুরাতন ashপ্যাকেজ থেকে উদ্ভূত , তাই আমি ব্যাসিবক্সের কমান্ডের নাম থাকা সত্ত্বেও এটিকে dashপরিবর্তে এর একটি উপকরণ হিসাবে বিবেচনা করেছি ash

      (Busybox এছাড়াও একটি কম featureful বিকল্প অন্তর্ভুক্ত ashনামক hush। সাধারণত মাত্র দুটি এক পরিণত নির্মাণ করা হবে কোন busybox বাইনারি দেওয়া হলে ashডিফল্টরূপে, কিন্তু hush। যখন স্থান সত্যিই টাইট এভাবে /bin/shbusybox ভিত্তিক সিস্টেমে না সর্বদা dash। -একটি)

  • জিএনইউ বাশ , যা যখন ডাকা হয় তখন এর বেশিরভাগ নন-পসিক্স এক্সটেনশানকে অক্ষম করেsh

    এই পছন্দটি ডেস্কটপ এবং লিনাক্সের সার্ভারের বৈকল্পিকগুলিতে, সাধারণত ডেবিয়ান এবং এর ডেরাইভেটিভ ব্যতীত is ম্যাক ওএস এক্স 2003 সালে প্রকাশিত প্যান্থার থেকে এটিও করেছেন।

  • সঙ্গে একটি শেল ksh93POSIX এক্সটেনশন , যেমন OpenBSD মধ্যে । যদিও ওপেনবিএসডি শেল বোর্ন এবং পসিক্স শেলগুলির সাথে সিনট্যাক্স এবং সিনট্যাক্সের অসঙ্গতিগুলি এড়াতে আচরণ পরিবর্তন করে যখন এটি বলা হয় sh, এটি কোনও পুরানো শাঁসের সাথে বিরোধী নয় বলে এর শুদ্ধ এক্সটেনশনগুলির কোনওটি অক্ষম করে না।

    এটি সাধারণ নয়; আপনি ksh93বৈশিষ্ট্য আশা করা উচিত নয় /bin/sh

আমি উপরে "শেল স্ক্রিপ্ট" জেনেরিক শব্দ হিসাবে ব্যবহার করেছি যার অর্থ বোর্ন / পসিক্স শেল স্ক্রিপ্টিং। এটি বোর্ন পরিবারের শেলগুলির সর্বব্যাপীতার কারণে। অন্যান্য শেলগুলিতে স্ক্রিপ্টিং সম্পর্কে কথা বলতে গেলে আপনাকে "সি শেল স্ক্রিপ্ট" এর মতো একটি যোগ্যতা দেওয়া দরকার। এমনকি এমন সিস্টেমে যেখানে সি পরিবারের শেলটি ডিফল্ট ইন্টারেক্টিভ শেল, স্ক্রিপ্টিংয়ের জন্য বোর্ন শেলটি ব্যবহার করা ভাল

এটি বলছে যে উইকিপিডিয়া যখন ইউনিক্স শেলগুলি শ্রেণীবদ্ধ করে , তখন তারা এগুলি বোর্ন শেল সামঞ্জস্যপূর্ণ, সি শেল সুসংগত এবং "অন্যান্য" হিসাবে গোষ্ঠীভুক্ত করে।

এই চিত্রটি সাহায্য করতে পারে:

ইউনিক্স শেলস: বোর্ন, কর্ন, পসিক্স, সি এবং আরসি শেল পরিবার

(এসভিজি সংস্করণ, ৩১ কেবিতে ক্লিক করুন বা পূর্ণ-আকারের পিএনজি সংস্করণ দেখুন , ২১৮ কেবি)

"Sh বেমানান" হওয়ার অর্থ কী?

কেউ shঅসামঞ্জস্যপূর্ণ বিষয়ে কথা বলার অর্থ সাধারণত তিনটি জিনিসের একটি:

  1. তারা সেই "অন্যান্য" শেলগুলির একটিতে উল্লেখ করছে ⁹

  2. তারা বোর্ন এবং সি শেল পরিবারের মধ্যে একটি পার্থক্য তৈরি করছে।

  3. তারা বোর্নে পারিবারিক শেলের একটি নির্দিষ্ট বৈশিষ্ট্য সম্পর্কে কথা বলছে যা বোর্ন পরিবারের অন্যান্য শেলগুলিতে নেই। ksh93, bashএবং zshবিশেষত অনেকগুলি বৈশিষ্ট্য রয়েছে যা পুরানো "স্ট্যান্ডার্ড" শেলগুলির মধ্যে নেই। একবারে আপনি ভাগ করা পসিক্স / ksh88বেস ছাড়িয়ে গেলে এই তিনটি অনেক দিক থেকেও পারস্পরিক-বেমানান ।

উপরের দিকে #!/bin/sh শেবাং লাইন দিয়ে শেল স্ক্রিপ্ট লিখতে বাশ বা কর্ন শেল এক্সটেনশানগুলির মধ্যে ব্যবহার করা এটি একটি ক্লাসিক ত্রুটি । যেহেতু /bin/shআজকাল এতগুলি সিস্টেমে উপরের কর্ন / পসিক্স পরিবারের ডায়াগ্রামের শেলগুলির মধ্যে একটি, সুতরাং এই জাতীয় স্ক্রিপ্টগুলি যে লিখিত রয়েছে সেটিতে এটি কাজ করবে, তবে তারপরে /bin/shশেলগুলির বিস্তৃত বোর্ন পরিবার থেকে এমন কিছু সিস্টেমে ব্যর্থ হবে । শ্রেষ্ঠ অনুশীলন ব্যবহার করা #!/bin/bashবা #!/bin/kshলাইন কুঁড়েঘর স্ক্রিপ্ট যেমন এক্সটেনশন ব্যবহার করে।

প্রদত্ত বোর্ন পরিবারের শেল স্ক্রিপ্টটি বহনযোগ্য কিনা তা যাচাই করার অনেকগুলি উপায় রয়েছে:

কেন তারা আলাদা?

একই কারণে সমস্ত "নতুন ও উন্নত!" বিষয়গুলি পৃথক:

  • উন্নত সংস্করণটি কেবল পিছনের সামঞ্জস্যতা ভেঙে উন্নত করা যেতে পারে।

  • কেউ কিছু কাজ করার জন্য আলাদা উপায়ের কথা ভেবেছিলেন, যা তারা আরও ভাল পছন্দ করে তবে এটি পুরানো কাজটি করার মতো নয় isn't

  • কেউ পুরানো স্ট্যান্ডার্ডটিকে সম্পূর্ণরূপে না বুঝে পুনরায় সংশোধন করার চেষ্টা করেছিল, তাই তারা গণ্ডগোল করে এবং একটি অজান্তেই পার্থক্য তৈরি করে।


পাদটীকা এবং পাশে :

  1. বিএসডি ইউনিক্সের প্রথম সংস্করণগুলি ভি 6 ইউনিক্সের জন্য কেবল অ্যাড-অন সফ্টওয়্যার সংগ্রহ ছিল। যেহেতু বোর্ন শেলটি ভি until অবধি এটি অ্যান্ড টি ইউনিক্সে যুক্ত করা হয়নি, তাই BSD প্রযুক্তিগতভাবে বোর্ন শেলটি শুরু করে নি। থম্পসন শেলের আদিম প্রকৃতির বিএসডির উত্তর ছিল সি শেল

    তা সত্ত্বেও, বাসদ প্রথম স্বতন্ত্র সংস্করণে (2.9BSD এবং 3BSD) V7 বা তার পোর্টেবল উত্তরাধিকারী উপর ভিত্তি করে ইউনিক্স / 32V , তাই তারা করেনি বোর্ন শেল অন্তর্ভুক্ত।

    (2 বিএসডি লাইনটি ডিজিটালের পিডিপি মিনিকম্পিউটারের জন্য বিএসডি এর সমান্তরাল কাঁটাচামচায় পরিণত হয়েছিল , যখন 3BSD এবং 4BSD লাইন ভ্যাক্সেন এবং ইউনিক্স ওয়ার্কস্টেশনের মতো নতুন কম্পিউটার ধরণের সুবিধা নিতে গিয়েছিল । 2.9BSD মূলত 4.1cBSD এর PDP সংস্করণ ছিল ; তারা ছিল সমসাময়িক, এবং ভাগ কোড । PDPs শুধু অদৃশ্য নি VAX এসেছে, তাই 2BSD লাইন হয় এখনো shambling বরাবর ।)

    এটা বলা নিরাপদ যে 1983 সালের মধ্যে বর্ন শেল ইউনিক্স বিশ্বের সর্বত্র ছিল comp এটি কম্পিউটিং ইন্ডাস্ট্রিতে "চিরকালের জন্য" খুব ভাল অনুমান। এমএস-ডস সেই বছর একটি হাইরিয়ালিকাল ফাইল সিস্টেম পেয়েছিল (অ্যাওউউ, হাউ কিউইউইট!) এবং এর 9 "বি অ্যান্ড ডাব্লু স্ক্রিনযুক্ত প্রথম 24-বিট ম্যাকিনটোস - গ্রেস্কেল নয়, আক্ষরিকভাবে কালো এবং সাদা - পরের বছরের প্রথম দিকে না বেরিয়ে আসে।

  2. আজকের মানদণ্ডে থম্পসন শেলটি বেশ আদিম ছিল । এটি কেবলমাত্র একটি ইন্টারেক্টিভ কমান্ড শেল ছিল, আমরা স্ক্রিপ্ট প্রোগ্রামিং পরিবেশের চেয়ে আজকে প্রত্যাশা করি। এটিতে পাইপ এবং I / O পুনঃনির্দেশের মতো জিনিস ছিল যা আমরা প্রোটোটাইপিকভাবে একটি "ইউনিক্স শেল" এর অংশ হিসাবে বিবেচনা করি, যাতে আমরা এমএস-ডস কমান্ড শেলটিকে ইউনিক্স থেকে পেয়েছি বলে মনে করি ।

    বোর্ন শেল পিডাব্লুবি শেলকেও প্রতিস্থাপন করেছিল , যা থম্পসন শেল যেমন প্রোগ্রামযোগ্যতা ( if, switchএবং while) এবং পরিবেশগত ভেরিয়েবলগুলির প্রাথমিক রূপের সাথে গুরুত্বপূর্ণ বিষয় যুক্ত করেছিল । পিডাব্লুবি শেল থম্পসন শেলের তুলনায় আরও কম স্মরণযোগ্য কারণ এটি ইউনিক্সের প্রতিটি সংস্করণের অংশ ছিল না।

  3. যখন কেউ নয় POSIX সম্পর্কে সুনির্দিষ্ট বনাম বোর্ন শেল সামঞ্জস্য, সেখানে তারা মানে হতে পারে একটি সম্পূর্ণ পরিসর।

    এক পর্যায়ে তারা 1979 এর বোর্ন শেলটিকে তাদের বেসলাইন হিসাবে ব্যবহার করতে পারে। একটি " sh-compatible স্ক্রিপ্ট" এই অর্থে অর্থ হবে এটা সত্য বোর্ন শেল বা তার successors এবং ক্লোনস কোনো পুরোপুরি চালানোর বলে আশা করা হচ্ছে: ash, bash, ksh, zsh, ইত্যাদি

    অন্য চূড়ান্তভাবে কেউ পসিক্সের পরিবর্তে একটি বেসলাইন হিসাবে চিহ্নিত শেলটি ধরে নেয়। আমরা আজকাল অনেকগুলি পসিক্স শেল বৈশিষ্ট্যগুলিকে "স্ট্যান্ডার্ড" হিসাবে গ্রহণ করি যে আমরা প্রায়শই ভুলে যাই যে তারা বাস্তবে বোর্ন শেলটিতে উপস্থিত ছিল না: অন্তর্নির্মিত গাণিতিক, কাজের নিয়ন্ত্রণ, কমান্ডের ইতিহাস, উপকরণগুলি, কমান্ড লাইন সম্পাদনা, $()কমান্ডের ফর্ম প্রতিস্থাপন, ইত্যাদি

  4. যদিও ১৯৮০ এর দশকের গোড়ার দিকে কর্ন শেলের শিকড়গুলি ফিরে গেছে, ১৯৮৮ সালে সিস্টেম ভি রিলিজ হওয়া অবধি এটিএন্ডটি এটি ইউনিক্সে পাঠায়নি। যেহেতু অনেকগুলি kshইউনিক্স এসভিআর 4 -এর উপর ভিত্তি করে তৈরি করা হয়েছে , তাই এটি প্রতিটি প্রাসঙ্গিক বাণিজ্যিক ইউনিক্সকে আরও অনেক কিছু দিয়েছিল 1980 এর দশকের শেষের দিকে।

    ( এসভিআর 3 এর উপর ভিত্তি করে কয়েকটি অদ্ভুত ইউনিক্স স্বাদ এবং এর আগে এসভিআর 4 প্রকাশের আগে বাজারের টুকরো টুকরো করে রাখা হয়েছিল , তবে বিপ্লব এলে তারা প্রাচীরের বিরুদ্ধে প্রথম ছিল ।)

    1988 এও যে বছর প্রথম পসিক্স স্ট্যান্ডার্ডটি প্রকাশিত হয়েছিল, এর কর্ন শেল ভিত্তিক "পসিক্স শেল" with পরে, 1993 সালে, কর্ন শেলের একটি উন্নত সংস্করণ প্রকাশিত হয়েছিল। যেহেতু পসিক্স কার্যকরভাবে মূলটিকে পেরেক দিয়েছিল, kshদুটি বড় সংস্করণে কাঁটাচামচ করেছে: ksh88এবং ksh93, তাদের বিভক্তির সাথে জড়িত বছরের পরে নামকরণ করা হয়েছে।

    ksh88পার্থক্যগুলি ছোট হলেও পুরোপুরি পসিক্স-সামঞ্জস্যপূর্ণ নয়, যাতে ksh88শেলের কয়েকটি সংস্করণ পসিক্স-সামঞ্জস্যপূর্ণ হওয়ার জন্য প্যাচ করা হয়েছিল। ( ডঃ ডেভিড জি। কর্নের সাথে স্ল্যাশডোটের একটি আকর্ষণীয় সাক্ষাত্কার থেকে এটি Yes হ্যাঁ, যে ব্যক্তিটি শেলটি লিখেছিল))

    ksh93হয় POSIX শেলের একটি সম্পূর্ণ সামঞ্জস্যপূর্ণ সুপারসেটও । উপর ডেভেলপমেন্ট ksh93হয়েছে বিক্ষিপ্ত যেহেতু প্রাথমিক উৎস সংগ্রহস্থলের যেমন AT & T থেকে সরানো GitHub থেকে নতুন রিলিজ হওয়া 3 বছর বয়সী হিসাবে আমি এই, ksh93v লিখতে হয়। (প্রকল্পের ভিত্তির নামটি ksh931993 এর বাইরে প্রকাশের সংস্করণ বোঝাতে যোগ করা প্রত্যয় সহ অবশিষ্ট রয়েছে ))

    পসিক্স শেল থেকে আলাদা জিনিস হিসাবে কর্ন শেল অন্তর্ভুক্ত করা সিস্টেমগুলি সাধারণত এটি উপলব্ধ করে তোলে /bin/ksh, যদিও কখনও কখনও এটি অন্য কোথাও লুকিয়ে থাকে।

    যখন আমরা kshনাম অনুসারে বা কর্ন শেল সম্পর্কে কথা বলি , আমরা এমন ksh93বৈশিষ্ট্যগুলির সাথে কথা বলি যা এটির পিছনের সাথে সামঞ্জস্যপূর্ণ বোর্ন এবং পসিক্স শেল সাবসেটগুলি থেকে পৃথক করে। আপনি ksh88আজ খুব কমই খাঁটি জুড়ে দৌড়ান ।

  5. এটিএন্ডটি মার্চ 2000 পর্যন্ত কর্ন শেল সোর্স কোডের মালিকানা রেখেছিল । সেই মুহুর্তে, জিএনইউ বাশের সাথে লিনাক্সের সম্পর্ক খুব দৃ very় ছিল। বাশ এবং ksh93 প্রত্যেকের একে অপরের তুলনায় সুবিধা রয়েছে তবে এই সময়ে জড়তা লিনাক্সকে বাশের সাথে শক্তভাবে জড়িত রাখে।

    কেন প্রথম দিকে লিনাক্স বিক্রেতাদের হিসেবে সবচেয়ে বেশি যে বেশি গনুহ ব্যাশ পছন্দ করে নিন হিসেবে pdksh, যা ছিল সময় লিনাক্স শুরু হয়েছিল পাওয়া যায়, আমি userland বাকি এত এছাড়াও থেকে এসেছিলেন এটা অনুমান চাই গনুহ প্রকল্পের । বাশরা এর চেয়ে কিছুটা বেশি অগ্রসর pdksh, যেহেতু বাশ বিকাশকারীরা কর্ন শেল বৈশিষ্ট্যগুলি অনুলিপি করতে সীমাবদ্ধ করে না।

    pdkshএটিএন ও টি উত্স কোডটি সত্যিকারের কর্ন শেলটিতে প্রকাশের সময় সম্পর্কে কাজ বন্ধ হয়ে গেছে। দুটি প্রধান কাঁটাচামচ এখনও রক্ষণাবেক্ষণ করা হয়, তবে: ওপেনবিএসডি pdkshএবং মিরবিএসডি কর্ন শেলmksh ,।

    আমি এটি আকর্ষণীয় মনে করি mkshযা বর্তমানে সাইগউইনের জন্য প্যাকেজ করা একমাত্র কর্ন শেল বাস্তবায়ন।

  6. জিএনইউ বাশ বিভিন্নভাবে পসিক্স ছাড়িয়ে যায় তবে আপনি আরও বিশুদ্ধ পসিক্স মোডে চালিয়ে যেতে বলতে পারেন

  7. csh/ tcshসাধারণত 1990 মাধ্যমে বাসদ Unixes ডিফল্ট ইন্টারেক্টিভ শেল ছিল।

    বিএসডি বৈকল্পিক হওয়ায় ম্যাক ওএস এক্স এর প্রথম সংস্করণগুলি ম্যাক ওএস এক্স 10.2 "জাগুয়ার" এর মাধ্যমে ছিল । ওএস এক্স 10.3 "প্যান্থার" -কে ওএস এক্সtcsh বাশ থেকে ডিফল্ট শেলটি পরিবর্তন করেছে । এই পরিবর্তনটি 10.2 বা তার আগের থেকে আপগ্রেড হওয়া সিস্টেমগুলিকে প্রভাবিত করে না। এই রূপান্তরিত সিস্টেমে বিদ্যমান ব্যবহারকারীরা তাদের শেল রেখেছিলেন ।tcsh

    ফ্রিবিএসডি ডিফল্ট শেল হিসাবে এখনও ব্যবহার করার দাবি করেছেtcsh , তবে আমি এখানে ফ্রিবিএসডি 10 ভিএম-তে ডিফল্ট শেলটি পসিক্স-সামঞ্জস্যপূর্ণ অ্যালকুইস্ট শেল রূপগুলির মধ্যে একটি হিসাবে উপস্থিত বলে মনে হচ্ছে । নেটবিএসডি-তেও এটি সত্য।

    ওপেনবিএসডি pdkshপরিবর্তে ডিফল্ট শেল হিসাবে একটি কাঁটাচামচ ব্যবহার করে।

    লিনাক্স এবং ওএস এক্সের উচ্চতর জনপ্রিয়তা কিছু লোককে ইচ্ছে করে যে ফ্রিবিএসডিও বাশের দিকে চলে যেতে পারে, তবে দার্শনিক কারণে তারা শীঘ্রই এগুলি আর করবে না । এটি যদি আপনাকে বিরক্ত করে তবে এটি পরিবর্তন করা সহজ

  8. /bin/shআজকালকার হিসাবে সত্যই ভ্যানিলা বোর্ন শেল সহ একটি সিস্টেম খুঁজে পাওয়া বিরল । সামঞ্জস্যতা পরীক্ষার জন্য পর্যাপ্ত পরিমাণে এটির নিকটবর্তী কিছু খুঁজে পেতে আপনাকে আপনার পথ ছাড়তে হবে।

    আমি শুধুমাত্র একটি উপায় একটি আধুনিক কম্পিউটারে একটি প্রকৃত 1979 মদ বোর্ন শেল চালানোর জন্য সচেতন আছি: ব্যবহার প্রাচীন ইউনিক্স V7 ডিস্ক ইমেজ সঙ্গে SIMH পিডিপি -11 কাল্পনিক থেকে কম্পিউটার ইতিহাসের সিমুলেশন প্রকল্প । সিমএইচ প্রতিটি ইউনিক্স কম্পিউটারের মতো চলে , কেবল ইউনিক্সের মতো নয়। SIMH এমনকি রান Android এর উপর এবং iOS এ

    সঙ্গে OpenSolaris , সূর্যের খুলতে-sourced প্রথমবারের বোর্ন শেলের SVR4 সংস্করণ। তার আগে, বোর্ন শেলের পোস্ট-ভি 7 সংস্করণগুলির উত্স কোডটি কেবল ইউনিক্স উত্স কোড লাইসেন্স সহ তাদের জন্য উপলব্ধ ছিল।

    সেই কোডটি এখন ডিপান্টেড ওপেনসোলারিস প্রকল্পের বিভিন্ন উত্স থেকে পৃথকভাবে উপলব্ধ।

    সর্বাধিক প্রত্যক্ষ উত্স হেরলুম বোর্ন শেল প্রকল্প । এটি ওপেনসোলারিসের মূল রিলিজের 2005 পরে পাওয়া যায়। পরের কয়েক মাস ধরে কিছু বহনযোগ্যতা এবং বাগ ফিক্সিংয়ের কাজ করা হয়েছিল, তবে তারপরে প্রকল্পটির উন্নয়ন বন্ধ হয়ে যায়।

    জার্গ শিলিং oshতার শিলি সরঞ্জাম প্যাকেজের মতো এই কোডটির একটি সংস্করণ বজায় রাখার জন্য আরও ভাল কাজ করেছেন । এই সম্পর্কে আরও জানতে উপরের দেখুন।

    মনে রাখবেন যে ২০০ release সোর্স কোড রিলিজ থেকে প্রাপ্ত এই শেলগুলিতে মাল্টি-বাইট অক্ষর সেট সমর্থন, কাজের নিয়ন্ত্রণ, শেল ফাংশন এবং অন্যান্য বৈশিষ্ট্যগুলি মূল 1979 এর বোর্ন শেলটিতে উপস্থিত নেই।

    আপনি আসল বোর্ন শেলটিতে রয়েছেন কিনা তা বলার একটি উপায় হ'ল থম্পসন শেল থেকে উত্তরণকে স্বাচ্ছন্দ্যে যোগ করার জন্য এটি কোনও অননুমোদিত বৈশিষ্ট্যটিকে সমর্থন করে কিনা তা দেখার ^জন্য : এর জন্য একটি উপাধি হিসাবে |। এর অর্থ এটি, কোনও কমান্ড যেমন ls ^ moreকর্ন বা পোসিক্স টাইপ শেলটিতে ত্রুটি দেয় তবে এটি ls | moreসত্য বোর্ন শেলের মতো আচরণ করবে ।

  9. মাঝেমধ্যে আপনি একটি fish, scshবা rc/esঅনুগামীদের মুখোমুখি হন তবে সেগুলি সি শেল অনুরাগীদের চেয়ে বিরল।

    rcশাঁস পরিবার সাধারণভাবে ইউনিক্স / লিনাক্স সিস্টেমে ব্যবহার করা হয় না, কিন্তু পরিবার ঐতিহাসিকভাবে গুরুত্বপূর্ণ, যা কিভাবে এটি উপরে ডায়াগ্রাম একটি জায়গা অর্জন করেন। rcমান শেল হয় বেল ল্যাবস থেকে প্ল্যান 9 অপারেটিং সিস্টেম, এর উত্তরাধিকারী এক ধরনের 10th সংস্করণ ইউনিক্স , বেল ল্যাবস 'অপারেটিং সিস্টেমের নকশা মধ্যে অব্যাহত গবেষণার অংশ হিসেবে সৃষ্টি করেছেন। এটি একটি প্রোগ্রামিং স্তরে বোর্ন এবং সি শেল উভয়ের সাথেই বেমানান; সেখানে সম্ভবত একটি পাঠ আছে।

    সর্বাধিক সক্রিয় রূপটি টবি গুডউইন দ্বারা পরিচালিত এক হিসাবে rcদেখা যায় যা বায়রন রাকিতসিসের ইউনিক্স ক্লোন ভিত্তিক ।rc


আপনি যদি আরও সম্পর্কগুলি জানতে চান, যেমন UNOS "কমান্ড", "bsh" এবং সাম্প্রতিক বোর্ন শেলের সাথে, আমাকে একটি নোট প্রেরণ করুন। ইঙ্গিত হিসাবে: UNOS কমান্ডের একটি বিল্টিন কমান্ড "কর" ছিল যা আর্গুমেন্ট সহ এক-লাইন শেল স্ক্রিপ্ট হিসাবে কাজ করেছিল। এই ধারণাটি বোর্ন শেলকে "দোশ" হিসাবে স্থানান্তরিত করা হয়েছিল এবং প্যারামিটারাইজিং এলিয়াসগুলির অনুমতি দেয়, এমন কিছু যা আপনি ksh বা বাশ থেকে পেতে পারেন না।
স্কিচলি

লক্ষণীয় যে pdksh নিজেই Forsyth শেল উপর ভিত্তি করে হতে পারে। আজকের দিনে বেশিরভাগ ক্ষেত্রে ভুলে গেলেও পিডিএক্স heritageতিহ্যের কিছু historicalতিহাসিক তাত্পর্য রয়েছে তবে এটি মিনিক্সের কয়েকটি সংস্করণের শেল ছিল এবং এমএসডোসে পোর্ট করা হয়েছিল।
স্টাফেন চেজেলাস

25

"sh উপযুক্ত" বলতে পসিক্সকেsh বোঝায় , সমস্ত সামঞ্জস্যপূর্ণ সিস্টেমে থাকা বেসিক শেলটি প্রয়োজনীয়। একটি sh- সামঞ্জস্যপূর্ণ স্ক্রিপ্ট কোনও POSIX- সামঞ্জস্যপূর্ণ মেশিনে কাজ করা উচিত।

কারণ এটা এত বলার প্রয়োজনীয় যে সাধারণভাবে হয় /bin/shএকটি সিমবলিক লিঙ্ক হয় /bin/bash, যা কিছু Bashisms স্ক্রিপ্ট নিজেদের ডিক্লেয়ার ব্যবহার করতে মধ্যে চিলতা দিন হয়েছে shসঙ্গে #!/bin/sh। এই স্ক্রিপ্টগুলি এমন কিছু সিস্টেমে কাজ করতে ব্যর্থ হয় যা কিছু বাণিজ্যিক ইউনিসিকে চিরকালের জন্য এবং সম্প্রতি ডেবিয়ান এবং ডেরিভেটিভসbash হিসাবে ব্যবহার করে না ।/bin/sh

বিশেষত dashদেবিয়ান অ্যালকুইশ শেলটি shইদানীং ডিফল্ট হিসাবে ব্যবহার করার প্রবণতা দেখা গেছে , কারণ এটি ছোট এবং দ্রুত গতিতে বোঝায়। এই প্রবণতা সেই সমস্ত বাশিমিকে হাইলাইট করেছে যা অনুমিত shস্ক্রিপ্টগুলিতে ছিল। কোনও কিছুকে "এসএস সুসংগত" হিসাবে বর্ণনা করা ইঙ্গিত দেয় যে এটি সম্পূর্ণরূপে পসিক্স-নির্দিষ্ট ভাষার মধ্যেই থাকার মাধ্যমে এই সিস্টেমগুলির সাথে কাজ করার উদ্দেশ্য ছিল - সমস্ত শেলগুলি সেই কার্যকারিতাটির একটি সুপারসেট কার্যকর করবে, তাই এটি সর্বত্র কাজ করার গ্যারান্টিযুক্ত তবে তাদের এক্সটেনশনগুলি তা নয় একে অপরের সাথে সামঞ্জস্যপূর্ণ।

বিভিন্ন শেলগুলির নিজস্ব বিকাশের ইতিহাস রয়েছে এবং সময়ের সাথে সাথে বিভিন্ন দিকে ডাইভার্ট করা হয়েছে, কারণ তারা তাদের ব্যবহারকারীদের জন্য ইন্টারেক্টিভ ব্যবহারে সহায়তা করার জন্য, বা এসোসিয়েটিভ অ্যারেগুলির মতো স্ক্রিপ্টিং এক্সটেনশনগুলি যুক্ত করতে ফাংশন যুক্ত করেছে। একটি "শ-অসম্পূর্ণ" স্ক্রিপ্ট বাশের [[শর্তাবলীর মতো এই মানহীন কিছু এক্সটেনশন বৈশিষ্ট্যগুলির ব্যবহার করবে ।

bashএবং tcshএবং zshঅন্যান্য বর্তমান শেলগুলির মধ্যে নন-পসিক্স বৈশিষ্ট্যগুলি দরকারী এবং প্রচুর উপলক্ষ রয়েছে যেখানে আপনার প্রয়োজন হতে পারে বা প্রয়োজন হতে পারে। এগুলি কেবল এমন কোনও স্ক্রিপ্টে ব্যবহার করা উচিত নয় যা এটিকে কাজ করার জন্য নিজেকে ঘোষণা করে /bin/sh, কারণ আপনি shযে সিস্টেমটি চালাচ্ছেন তার ভিত্তি প্রয়োগের ক্ষেত্রে সেই বৈশিষ্ট্যগুলির উপর নির্ভর করতে পারবেন না ।

এমন একটি স্ক্রিপ্ট যা ব্যবহার করতে হবে, বলুন, সহযোগী অ্যারেগুলি এটির bashপরিবর্তে এটি চালানো উচিত তা নিশ্চিত করা উচিত sh:

#!/bin/bash
declare -A array

এটি যে কোনও জায়গায় কাজ করবে bash। যে স্ক্রিপ্টগুলির বর্ধিত কার্যকারিতা প্রয়োজন হয় না এবং পোর্টেবল হতে বোঝানো হয় সেগুলি ঘোষণা করতে হবে যে তারা shবেস শেল কমান্ড ভাষার ব্যবহার করে এবং লেগে থাকে।

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