بورن شيل

بورن شيل ( Bourne shell sh) هو مترجم أوامر سطر الأوامر لأنظمة تشغيل الحاسوب . ظهر لأول مرة في الإصدار السابع من يونكس ، كصدفة افتراضية . وتستمر أنظمة يونكس في استخدام بورن شيل، أو رابط رمزي أو رابط ثابت لصدفة متوافقة، حتى عندما يستخدم معظم المستخدمين صدفات أخرى./bin/sh

كانت واجهة Bourne shell قياسية في جميع أنظمة Unix المعروفة، على الرغم من أن العديد من البرامج النصية المكتوبة بلغة csh كانت شائعة في أنظمة BSD . وباعتبارها أساسًا لبنية POSIX ، يمكن تشغيل برامج Bourne shell النصية عادةً باستخدام Bash أو dash على أنظمة Linux أو غيرها من الأنظمة الشبيهة بـ Unix؛ وBash نفسه نسخة مجانية من Bourne.sh

تاريخ

الإصدار 7 من يونكس : صفحة دليل بورن شل الأصلية . محاكاة PDP-11 باستخدام SIMH

الأصول

بدأ العمل على صدفة بورن في عام 1976. [ 1 ] طُوّرت صدفة بورن على يد ستيفن بورن في مختبرات بيل ، وكانت بديلًا لصدفة تومسون ، التي كان ملفها التنفيذي يحمل الاسم نفسه sh. سبقت صدفة بورن صدفة ماشي . أُصدرت صدفة بورن في عام 1979 ضمن إصدار يونكس 7 الذي وُزّع على الكليات والجامعات. على الرغم من استخدامها كمفسر أوامر تفاعلي، فقد صُممت أيضًا كلغة برمجة نصية ، وتحتوي على معظم الميزات التي تُستخدم عادةً لإنتاج برامج مُهيكلة.

اكتسبت شعبية مع نشر كتاب "بيئة برمجة يونكس" من تأليف برايان كيرنيغان وروب بايك - وهو أول كتاب منشور تجارياً يقدم الصدفة كلغة برمجة في شكل تعليمي.

كانت بعض الأهداف الرئيسية للصدفة ما يلي: [ 2 ]

ميزات النسخة الأصلية

تتضمن ميزات الإصدار السابع من واجهة سطر الأوامر بورن لنظام يونكس ما يلي:

  • يمكن استدعاء البرامج النصية كأوامر باستخدام اسم ملفها
  • يمكن استخدامه بشكل تفاعلي أو غير تفاعلي
  • يسمح بتنفيذ الأوامر بشكل متزامن وغير متزامن.
  • يدعم إعادة توجيه المدخلات والمخرجات وخطوط الأنابيب
  • يوفر مجموعة من الأوامر المدمجة
  • يوفر هياكل التحكم في التدفق ومرافق التسعير.
  • المتغيرات غير المصنفة
  • يوفر نطاقًا متغيرًا محليًا وعالميًا
  • لا تتطلب البرامج النصية تجميعًا قبل التنفيذ
  • لا يحتوي على خاصية الانتقال إلى، لذا قد يكون من الضروري إعادة هيكلة الكود
  • استبدال الأوامر باستخدام علامات الاقتباس الخلفية : `command`.
  • هنا تجدون وثائق حول كيفية تضمين كتلة من نص الإدخال داخل نص برمجي.<<
  • for ~ do ~ doneالحلقات، وخاصة استخدامها $*للتكرار على الوسائط، بالإضافة إلى for ~ in ~ do ~ doneالحلقات للتكرار على القوائم.
  • case ~ in ~ esacآلية اختيار، تهدف في المقام الأول إلى المساعدة في تحليل الحجج .
  • shتم توفير الدعم لمتغيرات البيئة باستخدام معلمات الكلمات الرئيسية والمتغيرات القابلة للتصدير.
  • يحتوي على أحكام قوية للتحكم في المدخلات والمخرجات وفي مرافق مطابقة التعبيرات الخاصة به.

كانت Bourne shell أيضًا أول من استخدم اصطلاح استخدام واصف الملف لرسائل الخطأ ، مما يسمح بتحكم برمجي أكبر بكثير أثناء كتابة البرامج النصية من خلال إبقاء رسائل الخطأ منفصلة عن البيانات.2>

تأثير من Algol 68C

تأثر أسلوب ستيفن بورن في البرمجة بتجربته مع مُصرّف ALGOL 68C [ 3 ] الذي كان يعمل عليه في جامعة كامبريدج . بالإضافة إلى أسلوب كتابة البرنامج، أعاد بورن استخدام أجزاء من عبارات ALGOL 68 ، و " (باستخدام بدلاً من ) في صيغة أوامر يونكس بورن الشائعة . علاوة على ذلك، ورغم أن الإصدار السابع من الأوامر مكتوب بلغة C ، فقد استغل بورن بعض وحدات الماكرو [ 4 ] لإضفاء طابع ALGOL 68 على شفرة المصدر المكتوبة بلغة C.if ~ then ~ elif ~ then ~ else ~ ficase ~ in ~ esacfor/while ~ do ~ oddoneod أُطلق على اللهجة الناتجة من لغة C اسم "بورنيغول". [ 5 ] مثال على "بورنيغول" من ملف cmd.c: [ 6 ]

LOCAL TREPTR term ( flg ) { REG TREPTR t ;reserv ++ ; IF flg & NLFLG THEN skipnl (); ELSE word (); FIإذا كان ( t = item ( TRUE )) ANDF ( wdval == '^' ORF wdval == '|' ) THEN return ( makelist ( TFIL , makefork ( FPOU , t ), makefork ( FPIN | FPCL , term ( NLFLG )))); ELSE return ( t ); FI }

ألهمت هذه الماكرو (إلى جانب أمر finger الموزع في إصدار Unix 4.2BSD ) مسابقة IOCCC الدولية لشفرة C المبهمة (IOCCC). [ 7 ]

الميزات التي تم إدخالها بعد عام 1979

على مر السنين، جرى تطوير واجهة Bourne shell في شركة AT&T. ولذلك، سُميت الإصدارات المختلفة منها بأسماء إصدارات نظام Unix الخاصة بشركة AT&T التي صدرت معها (ومن أهمها: الإصدار 7، والنظام الثالث، وSVR2، وSVR3، وSVR4). ولأن الواجهة لم تكن تُرقّم إصداراتها، كانت الطريقة الوحيدة لتحديدها هي اختبار خصائصها. [ 8 ]

تشمل ميزات إصدارات بورن شيل منذ عام 1979 ما يلي: [ 9 ]

  • أمر مدمج test– نظام التشغيل الثالث (1981)
  • # كرمز تعليق – نظام التشغيل الثالث (1981)
  • النقطتان الرأسيتان في استبدال المعاملات "${parameter:=word}" – نظام التشغيل System III shell (1981)
  • continueمع وسيط – غلاف النظام الثالث (1981)
  • cat <<-EOFللمستندات ذات المسافة البادئة هنا – نظام التشغيل الثالث (1981)
  • الوظائف والواجهة returnالمدمجة - SVR2 shell (1984)
  • المكونات المدمجة unset، echo، type– هيكل SVR2 (1984)
  • شفرة المصدر بعد إزالة لغة ALGOL68 - غلاف SVR2 (1984)
  • " " الحديثة $@- غلاف SVR3 (1986)
  • مدمج getopts- هيكل SVR3 (1986)
  • تتيح معالجة المعلمات المحسّنة استدعاء الدوال بشكل متكرر - SVR3 shell (1986)
  • نسخة نظيفة 8 بت - غلاف SVR3 (1986)
  • التحكم في الوظائف – SVR4 shell (1989)
  • دعم متعدد البايتات - غلاف SVR4 (1989)

المتغيرات

غلاف DMERT

نظام التشغيل DMERT (Duplex Multi-Environment Real-Time ) هو نظام تشغيل هجين يجمع بين تقنية المشاركة الزمنية والوقت الحقيقي، وقد طُوّر في سبعينيات القرن الماضي في مختبرات بيل في موقع إنديان هيل بمدينة نيبيرفيل، إلينوي. يستخدم النظام نسخةً من برنامج Bourne Shell تعود لعام 1978، بعنوان "VERSION sys137 DATE 1978 Oct 12 22:39:57". يعمل نظام DMERT على أجهزة كمبيوتر من طراز 3B21D لا تزال تُستخدم في قطاع الاتصالات.

قشرة الذرة

التفاعل مع pdksh في OpenBSD (الصدفة الافتراضية)

كانت صدفة كورن (ksh)، التي كتبها ديفيد كورن استنادًا إلى شفرة المصدر الأصلية لصدفة بورن [ 10 ] ، بمثابة حل وسط بين صدفة بورن وصدفة سي . استُمدّت بنيتها النحوية بشكل أساسي من صدفة بورن، بينما تشابهت ميزات التحكم في العمليات فيها مع تلك الموجودة في صدفة سي. استُخدمت وظائف صدفة كورن الأصلية (المعروفة باسم ksh88 نسبةً إلى عام إصدارها) كأساس لمعيار صدفة POSIX . أما الإصدار الأحدث، ksh93، فهو مفتوح المصدر منذ عام 2000 ويُستخدم في بعض توزيعات لينكس . وتُعدّ نسخة مُستنسخة من ksh88 تُعرف باسم pdksh الصدفة الافتراضية في نظام OpenBSD.

شيلي بورن شل

تتضمن أدوات شيلي الخاصة بيورغ شيلينغ ثلاثة مشتقات من بورن شل. [ 11 ]

العلاقة مع الأصداف الأخرى

سي شل

انتقد بيل جوي ، مؤلف واجهة سطر الأوامر C، واجهة بورن باعتبارها غير ملائمة للاستخدام التفاعلي، [ 12 ] وهي مهمة أقر ستيفن بورن نفسه بتفوق واجهة C فيها. ومع ذلك، ذكر بورن أن واجهته متفوقة في كتابة البرامج النصية ومتاحة على أي نظام يونكس، [ 13 ] كما انتقد توم كريستيانسن واجهة C باعتبارها غير مناسبة لكتابة البرامج النصية والبرمجة. [ 14 ]

أصداف ألمكويست

نظراً لمشاكل حقوق النشر المتعلقة بـ Bourne Shell كما استُخدمت في إصدارات CSRG BSD التاريخية، طوّر كينيث ألمكويست نسخةً مُطابقةً لـ Bourne Shell، تُعرف لدى البعض باسم Almquist shell، وهي مُتاحة بموجب ترخيص BSD ، وتُستخدم اليوم في بعض أنظمة BSD المُشتقة وفي بيئات ذات ذاكرة محدودة. نُقلت Almquist Shell إلى Linux، وأُعيد تسمية النسخة المُعدّلة إلى Debian Almquist shell ، أو dash. تُوفّر هذه الصدفة تنفيذاً أسرع للبرامج النصية القياسية sh(وبرامج POSIX القياسية shفي الأنظمة الحديثة المُشتقة) مع استهلاك أقل للذاكرة مُقارنةً بنظيرتها Bash. يُؤدي استخدامها إلى كشف عيوب Bash - وهي افتراضات مُرتبطة بـ Bash في البرامج النصية المُصممة للتشغيل على sh.

أصداف أخرى

انظر أيضاً

مراجع

  1. https://www.bsdcan.org/2015/schedule/events/612.en.html ستيفن بورن، المتحدث الرئيسي في مؤتمر BSDCan 2015
  2. "دليل لغات البرمجة: بورن شيل" . computerwoche.de . مؤرشف من الأصل في 18 ديسمبر 2025. تم الاطلاع عليه في 28 يونيو 2026 .
  3. ماكيلروي، دكتور في الطب (1987). قارئ أبحاث يونكس: مقتطفات مشروحة من دليل المبرمج، 1971-1986 (ملف PDF) (تقرير فني). مختبرات بيل، قسم أبحاث الحوسبة والكيمياء. 139. مؤرشف (ملف PDF) من الأصل في 4 مايو 2014.
  4. بورن، ستيف (12 يناير 1979). "mac.h - وحدات الماكرو التي استخدمها بورن لهيكلة لغة C مثل Algol68C" . شركة AT&T . تم الاطلاع عليه في 9 سبتمبر 2006 .
  5. بيك، جيري؛ أورايلي، تيم؛ لوكيدس، مايكل كوستا (1997). "46.6 احذر من خطأ Bourne Shell -e". أدوات يونكس القوية ( الطبعة الثانية). كامبريدج باريس: أورايلي. ISBN  1-56592-260-3تم الاطلاع عليه بتاريخ 21 مايو 2026 .
  6. إس آر بورن (1979). "صدفة يونكس" . www.tuhs.org . مختبرات بيل للهواتف . تم الاطلاع عليه بتاريخ 21 مايو 2026 .
  7. لاندون كورت نول ؛ سيمون كوبر؛ بيتر سيباخ وليونيد أ. بروخيس (2004). "الأسئلة الشائعة حول اللجنة الدولية لتنسيق المؤتمرات الدولية - سؤال وجواب: كيف بدأت اللجنة الدولية لتنسيق المؤتمرات الدولية؟" . ioccc.org . تاريخ الاسترجاع: 9 سبتمبر 2006 .
  8. "ما نوع هذه الصدفة؟" . www.in-ulm.de .
  9. " عائلة أصداف بورن التقليدية / تاريخها وتطورها" . www.in-ulm.de
  10. كورن، ديفيد ج. (26 أكتوبر 1994)، "ksh - لغة عالية المستوى قابلة للتوسيع" ، وقائع ندوة لغات المستوى العالي جدًا لعام 1994 التابعة لـ USENIX ، جمعية USENIX ، تم استرجاعها في 5 فبراير 2015 ، بدلاً من ابتكار لغة نصية جديدة، قمنا ببناء نظام إدخال نماذج عن طريق تعديل Bourne shell، وإضافة الأوامر المدمجة حسب الضرورة.
  11. "Schily Bourne Shell - مصدر Bourne Shell حديث ومُحسَّن ومتوافق مع معيار POSIX، يُشرف عليه يورغ شيلينغ" . codeberg.org . تم الاطلاع عليه بتاريخ 3 ديسمبر 2025 .
  12. مقدمة إلى C shell مؤرشفة في 13 يوليو 2018 في Wayback Machine بواسطة بيل جوي .
  13. بورن، ستيفن ر. (أكتوبر 1983). "صدفة يونكس" . بايت . ص 187. تم الاطلاع عليه في 30 يناير 2015 . 
  14. توم كريستيانسن (28 سبتمبر 1995). "برمجة Csh تعتبر ضارة" . تم الاطلاع عليه بتاريخ 17 فبراير 2014 .