كورنشل

KornShell ( ksh) هو غلاف أوامر يونكس ، طُوِّر بواسطة ديفيد كورن في مختبرات بيل في أوائل ثمانينيات القرن العشرين، وأُعلن عنه في مؤتمر USENIX في 14 يوليو 1983. [ 1 ] [ 2 ] استند التطوير الأولي إلى شفرة مصدر Bourne shell . [ 7 ] ومن بين المساهمين الأوائل الآخرين مطورو مختبرات بيل، مايك فيتش وبات سوليفان، اللذان كتبا شفرة وضعَي تحرير الأسطر Emacs و vi على التوالي. [ 8 ] يتوافق KornShell مع الإصدارات السابقة من Bourne shell، ويتضمن العديد من ميزات C shell ، استجابةً لطلبات مستخدمي مختبرات بيل.

سمات

يتوافق KornShell مع معيار POSIX.2 ، Shell and Utilities، Command Interpreter (IEEE Std 1003.2-1992). تشمل الاختلافات الرئيسية بين KornShell وBourne shell التقليدي ما يلي:

  • تم تصميم التحكم في الوظائف ، وتسمية الأوامر ، وسجل الأوامر على غرار ميزات C shell المقابلة ؛ تمت إضافة التحكم في الوظائف إلى Bourne Shell في عام 1989 [ 9 ].
  • خيارات لثلاثة أنماط لتحرير سطر الأوامر تعتمد على vi و Emacs و Gosling Emacs
  • المصفوفات الترابطية وعمليات الحساب ذات الفاصلة العائمة المدمجة (متوفرة فقط في إصدار ksh93 من KornShell)
  • البحث الديناميكي عن الدوال
  • الدوال الرياضية
  • استبدال العمليات وإعادة توجيه العمليات
  • تعابير شبيهة بلغة C
  • حلقات for و while محسّنة وموجهة نحو التعبيرات
  • إمكانية التوسع الديناميكي للأوامر المدمجة (المحملة ديناميكيًا) (منذ ksh93 )
  • المتغيرات المرجعية
  • المتغيرات المتداخلة هرميًا
  • يمكن أن تحتوي المتغيرات على دوال أعضاء مرتبطة بها
  • البرمجة الكائنية التوجه (منذ ksh93t )
    • يمكن أن تكون المتغيرات كائنات تحتوي على متغيرات (فرعية) وعناصر تابعة لها.
    • يتم استدعاء أساليب الكائن باستخدام اسم متغير الكائن متبوعًا (بعد نقطة) باسم الأسلوب
    • يتم استدعاء طرق الكائنات الخاصة عند: تهيئة الكائن أو تعيينه، أو التخلي عن الكائن ( إلغاء تعيينه ).
    • تتوفر خاصيتا التركيب والتجميع، بالإضافة إلى شكل من أشكال التوريث.

تاريخ

تم توزيع KornShell في البداية كجزء من مجموعة أدوات AT&T التجريبية في عام 1986، وتم تضمينها لاحقًا في إصدار UNIX System V 4 في عام 1989.

يعمل برنامج Korn Shell على خدمات Windows لنظام UNIX

كان KornShell في الأصل برنامجًا احتكاريًا . في عام 2000، تم إصدار شفرته المصدرية بموجب ترخيص خاص بشركة AT&T، ولكن منذ إصدار ksh93q في أوائل عام 2005، أصبح مرخصًا بموجب رخصة Eclipse العامة . [ 4 ] يتوفر KornShell كجزء من مجموعة برامج AT&T Software Technology (AST) مفتوحة المصدر. ولأن KornShell كان متاحًا في البداية فقط من خلال ترخيص احتكاري من AT&T، فقد تم إنشاء عدد من البدائل المجانية ومفتوحة المصدر، بما في ذلك pdksh و mksh و Bash و Z shell .

تم استخدام وظائف KornShell الأصلية، ksh88 ، كأساس لمعيار POSIX.2 ، Shell and Utilities، Command Interpreter (IEEE Std 1003.2-1992).

لا يزال بعض البائعين يشحنون إصداراتهم الخاصة من إصدار ksh88 الأقدم ، وأحيانًا مع إضافات. يتم صيانة ksh93 على GitHub . [ 10 ]

يُوزَّع ksh93 ، المعروف باسم "Desktop KornShell" ( dtksh )، كجزء من بيئة سطح المكتب المشتركة . [ 11 ] يوفر هذا الإصدار أيضًا تعيينات على مستوى الصدفة لعناصر واجهة المستخدم الرسومية Motif . وقد صُمِّمَ ليكون منافسًا لـ Tcl / Tk . [ 12 ]

أصبحت KornShell الأصلية، ksh88 ، الصدفة الافتراضية على نظام AIX في الإصدار 4، [ 13 ] [ 14 ] مع توفر ksh93 بشكل منفصل. [ 15 ]

يتضمن نظام UnixWare 7 كلاً من ksh88 و ksh93 . الصدفة الافتراضية في Korn هي ksh93 ، والموجودة في المسار /usr/bin/ksh ، بينما يتوفر الإصدار الأقدم في المسار /usr/bin/ksh88 . [ 16 ] كما يتضمن UnixWare أيضًا dtksh عند تثبيت بيئة سطح المكتب CDE .

شهدت توزيعة ksh93 وضعًا أقل استقرارًا بعد مغادرة مطوريها لشركة AT&T حوالي عام 2012 عند الإصدار المستقر ksh93u+ . استمر المطورون الرئيسيون في العمل على فرع ksh93v- التجريبي حتى عام 2014 تقريبًا. ثم تولت شركة Red Hat هذا العمل بشكل أساسي في عام 2017 (بناءً على طلبات العملاء)، مما أدى إلى الإصدار الأولي ksh2020 [ 17 ] في خريف عام 2019. على الرغم من أن هذا الإصدار الأولي قد عالج العديد من مشكلات الاستقرار السابقة، إلا أنه تسبب في مشاكل في التوافق والتعطل. [ 18 ] في مارس 2020، قررت AT&T التراجع عن التغييرات التي أدخلها المجتمع، وتخزينها في فرع منفصل، والبدء من جديد من ksh93u+ ، نظرًا لأن التغييرات كانت واسعة النطاق للغاية ومُركزة بشكل كبير على ksh بحيث يصعب على الشركة استيعابها في مشروع في وضع الصيانة. [ 19 ] [ 20 ] تم إصدار ksh2020 [ 21 ] كإصدار رئيسي لعدة أسباب [ 22 ] ، مثل إزالة دعم EBCDIC ، والتخلي عن دعم الإضافات الثنائية المكتوبة لـ ksh93u+ ، وإزالة بعض الدوال الرياضية المعطوبة، ولكن لم تقم AT&T بصيانته أو دعمه مطلقًا (ولا حتى في تاريخ إصداره الأولي). لم يتلقَ كود مصدر ksh2020 أي تحديثات منذ فبراير 2020، وتمت أرشفته للقراءة فقط في أكتوبر 2021. [ 17 ]

بعد المشاكل التي واجهت فرع ksh2020 وتوقفه عن العمل، تم إنشاء مستودع جديد في مايو 2020 لفرع ksh93u+m ، استنادًا إلى آخر إصدار مستقر من AT&T ( ksh93u+ 2012-08-01) حيث يستمر تطوير إصلاح الأخطاء بنشاط. [ 23 ]

المساهمات الرئيسية في فرع البرمجيات الرئيسي

لأغراض القوائم أدناه، يُعرَّف الفرع الرئيسي لبرنامج KSH بأنه البرنامج الأصلي، الذي يعود تاريخه إلى يوليو 1983، وحتى إصدار KSH2020 في أواخر عام 2019. وقد انقسم التطوير المستمر للإصدارات اللاحقة (الفروع) من KSH إلى مجموعات مختلفة بدءًا من عام 2020، ولن يتم التطرق إليها بالتفصيل أدناه.

المساهمون الأفراد الرئيسيون

فيما يلي قائمة مرتبة ترتيباً زمنياً تصاعدياً تقريباً حسب مساهماتهم:

  • ديفيد جي. كورن (مختبرات AT&T Bell، ومختبرات AT&T، وجوجل؛ والمؤسس)
  • غلين إس. فاولر (مختبرات إيه تي آند تي بيل، مختبرات إيه تي آند تي)
  • كيم-فونغ فو (مختبرات إيه تي آند تي بيل، مختبرات إيه تي آند تي)
  • آدم إدغار (مختبرات إيه تي آند تي بيل)
  • مايكل تي. فيتش (مختبرات إيه تي آند تي بيل)
  • باتريك د. سوليفان (مختبرات إيه تي آند تي بيل)
  • ماتياس ن. ميلشيور (أنظمة شبكات AT&T الدولية)
  • كارستن فلايشر (هندسة برمجيات أومنيوم)
  • بوير-مور
  • سايتشوار فاشيشت (القبعة الحمراء)
  • كورتيس رادر

مستشار التكامل

  • رولاند ماينز

المساهمون الرئيسيون من الشركات

فيما يلي قائمة مرتبة ترتيباً زمنياً تصاعدياً تقريباً حسب مساهماتهم:

موارد الشركات المتبرع بها

إلى جانب الشركات المساهمة الرئيسية (المذكورة أعلاه)، ساهمت بعض الشركات بموارد مجانية في تطوير KSH. وهذه الشركات مُدرجة أدناه (مرتبة أبجديًا):

المتغيرات

توجد العديد من النسخ المتفرعة والمستنسخة من KornShell:

  • dtksh  – نسخة معدلة من ksh93 مضمنة كجزء من CDE .
  • tksh  – نسخة معدلة من ksh93 توفر الوصول إلى مجموعة أدوات Tk widget .
  • أوكش  – نسخة معدلة من كورن شيل (KornShell) في نظام أوبن بي إس دي ، مصممة لتكون قابلة للنقل إلى أقصى حد [ 24 ] بين أنظمة التشغيل. وقد استُخدمت كصدفة افتراضية في نظام دي لينكس 7.2.
  • loksh  – نسخة لينكس من نسخة OpenBSD من KornShell، مع تغييرات طفيفة. [ 25 ]
  • mksh  – تطبيق مجاني للغة KornShell، مُشتق من pdksh في نظام OpenBSD . طُوّر في الأصل لنظام MirOS BSD ، وهو مرخص بموجب شروط ترخيص متساهلة (وإن لم تكن ملكية عامة)؛ وتحديدًا، ترخيص MirOS . [ 6 ] بالإضافة إلى استخدامه على أنظمة BSD، حلّت هذه النسخة محل pdksh في نظام Debian، [ 26 ] وهي الصدفة الافتراضية على نظام Android. [ 27 ]
  • SKsh  هو إصدار من نظام AmigaOS يوفر العديد من الميزات الخاصة بنظام Amiga، مثل التوافق مع ARexx . [ 28 ] وعلى هذا المنوال ، يستخدم نظام MorphOS برنامج pdksh في حزمة تطوير البرامج (SDK) الخاصة به.
  • كانت واجهة MKS Korn من شركة MKS Inc.  عبارة عن تطبيق خاص بلغة KornShell من خدمات مايكروسوفت ويندوز لنظام يونكس (SFU) حتى الإصدار 2.0؛ ووفقًا لديفيد كورن، لم تكن واجهة MKS Korn متوافقة تمامًا مع KornShell في عام 1998. [ 29 ] [ 30 ] في الإصدار 3.0 من SFU، استبدلت مايكروسوفت واجهة MKS Korn بواجهة جديدة متوافقة مع معيار POSIX.2 كجزء من Interix . [ 31 ]
  • تم تضمين KornShell في UWIN ، وهي حزمة توافق Unix من تطوير ديفيد كورن. [ 32 ]
  • تضمنت حزمة System V على نظام BSD الخاصة بدوغ غوين (مختبر أبحاث الجيش الأمريكي) /bin/sh نسخة رون ناتالي من /bin/sh الخاص بنظام SVR2، والتي كانت تدعم التحكم في العمليات وتحرير سطر الأوامر. وقد صدرت هذه النسخة في نفس فترة إصدار ksh الأصلي، قبل أن تنتشر على نطاق واسع في شركة AT&T. لاحقًا، أصبحت هذه النسخة هي /bin/sh التي تم شحنها مع جميع الأنظمة المشتقة من معالج Mach التابع لجامعة كارنيجي ميلون. [ 33 ]

انظر أيضاً

مراجع

  1. 1 2 رون غوميز (9 يونيو 1983). "جدول مؤتمر تورنتو USENIX (مبدئي)" . مجموعة الأخبار : net.usenix . تم الاطلاع عليه في 29 ديسمبر 2010 . 
  2. 1 2 غاي هاريس (10 أكتوبر 1983). "سؤال حول csh" . مجموعة الأخبار : net.flame . تم الاسترجاع في 29 ديسمبر 2010 . 
  3. "Korn Shell Launcher for Windows Subsystem for Linux « Musings" . blog.fpmurphy.com . تم الاطلاع عليه بتاريخ 29-01-2021 . 
  4. 1 2 "حزمة الفتح السريع" . أبحاث AT&T. مؤرشف من الأصل في 1 أكتوبر 2015. تم الاسترجاع في 19 ديسمبر 2022 .
  5. 1 2 "MirBSD Korn Shell" . Mirbsd.org . تم الاطلاع عليه بتاريخ 10 ديسمبر 2018 .
  6. كورن، ديفيد ج. (26 أكتوبر 1994)، "ksh - لغة عالية المستوى قابلة للتوسيع" ، وقائع ندوة لغات المستوى العالي جدًا لعام 1994 التابعة لـ USENIX ، جمعية USENIX ، تم استرجاعها في 5 فبراير 2015 ، بدلاً من ابتكار لغة نصية جديدة، قمنا ببناء نظام إدخال نماذج عن طريق تعديل Bourne shell، وإضافة الأوامر المدمجة حسب الضرورة.
  7. بولسكي، موريس آي؛ كورن، ديفيد جي (1989). "شكر وتقدير". لغة أوامر وبرمجة كورن شل . إنجلوود كليفس، نيوجيرسي: برنتيس هول. ص. 12. ISBN  0-13-516972-0.
  8. "عائلة أصداف بورن التقليدية / تاريخها وتطورها" . In-ulm.de . تم الاطلاع عليه بتاريخ 10 ديسمبر 2018 .
  9. هذا موقع تنزيل برامج AT&T AST من قسم أبحاث AT&T. توفر مجموعة برامج AT&T AST مفتوحة المصدر نظرة عامة على برامج UNIX العملية القابلة لإعادة الاستخدام. Github.com . ١٠ ديسمبر ٢٠١٨. تم الاطلاع عليه بتاريخ ١٠ ديسمبر ٢٠١٨ .
  10. بيل روزنبلات؛ أرنولد روبنز (2002). تعلم كورن شل ( الطبعة الثانية). أورايلي. الصفحات من 8 إلى 9. ISBN   978-0-596-00195-7.
  11. بيندرغراست، ج. ستيفن (1995). برمجة كورن شيل الرسومية على سطح المكتب . أديسون-ويسلي. ص 359. ISBN  978-0-201-63375-7.
  12. كيسي كانون؛ سكوت ترينت؛ كارولين جونز (1999). Simply AIX 4.3 . برنتيس هول. ص 21. ISBN  978-0-13-021344-0.
  13. "مركز معارف IBM" . IBM . تم الاطلاع عليه بتاريخ 10 ديسمبر 2018 .
  14. "مركز معارف IBM" . IBM . تم الاطلاع عليه بتاريخ 10 ديسمبر 2018 .
  15. "توافق UNIX95" . Uw714doc.sco.com . تم الاطلاع عليه بتاريخ 10 ديسمبر 2018 .
  16. 1 2 "ksh2020" . GitHub . 26 فبراير 2021.
  17. "سجل تغييرات ksh2020" . جيت هاب . 29 مايو 2020.
  18. "إعادة النظر في هذا المستودع وتشجيع المجتمع · المشكلة رقم 1466 · att/ast" . GitHub .
  19. "خطأ تجزئة الذاكرة مع أنماط glob الموسعة · #1464 · att/ast" . GitHub .
  20. "2020.0.0: إصدار مستقر من ksh-2020.0.0" . GitHub . تم الاطلاع عليه بتاريخ 29 يناير 2021. ملاحظة: ksh2020 غير مدعوم أو مُصان .
  21. "ksh 2020.0.0 CHANGELOG" . GitHub . 2021-01-29.
  22. "ksh 93u+m " . GitHub . 17 نوفمبر 2021.
  23. "oksh at GitHub" . GitHub . 1 أغسطس 2020.
  24. "loksh at GitHub" . GitHub . 15 أكتوبر 2021.
  25. "5.11. الانتقال من PDKSH إلى MKSH" . مؤرشف من الأصل بتاريخ 28-07-2014 . تم الاطلاع عليه بتاريخ 28-07-2014 .
  26. "واجهة المستخدم وأدوات أندرويد" . android.googlesource.com . تم الاطلاع عليه بتاريخ 27-06-2025 .
  27. "Aminet - util/Shell/SKsh21.LZH" .
  28. "ديفيد كورن يكشف كل شيء" . سلاش دوت. 7 فبراير 2001. تم الاطلاع عليه بتاريخ 22 أكتوبر 2009 .
  29. "جيري فيلدمان - أحد حضور مؤتمر USENIX NT/LISA NT" . Lists.blu.org. 29 أغسطس 1998. تم الاطلاع عليه بتاريخ 22 أكتوبر 2009 . 
  30. "خدمات ويندوز لنظام يونكس الإصدار 3.0" . Technet.microsoft.com. 5 ديسمبر 2007. تم الاطلاع عليه بتاريخ 22 أكتوبر 2009 .
  31. أناتول أولتشاك (2001). كورن شل: دليل برمجة يونكس ولينكس . أديسون-ويسلي بروفيشنال. ص 4. ISBN  978-0-201-67523-8.
  32. ناتالي، رون (30-01-2023). ""التحكم في الوظائف وغيرها من مزايا استخدام الجهاز الطرفي"من قائمة بريد جمعية تراث يونكس (TUHS). مؤرشف من الأصل بتاريخ 7 يوليو 2024. تم الاسترجاع بتاريخ 7 يوليو 2024. ... كان نظام التحكم في وظائف بيركلي حلاً مبتكرًا. بالنسبة لنا في مختبر أبحاث بيركلي (BRL) ، كانت المشكلة تكمن في كرهي الشديد لبنية أوامر C shell. لم تكن Korn shell قد انتشرت بعد من AT&T، لذا أمضيت وقتًا في محاولة فهم كيفية عملها في C shell (لم تكن موثقة بشكل جيد)، وذلك بالاعتماد على الفحص في الغالب، ثم أعدت تنفيذها في Bourne Shell (كنا نستخدم إصدار شفرة المصدر System V لذلك). مع ذلك، لم أتمكن من إقناع Bourne shell في BRL لأنه بحلول ذلك الوقت، كان tcsh قد ظهر مع ميزة تحرير سطر الأوامر. لذلك عدت إلى مصادر shell. في ذلك الوقت، كان الإصدار 5R2 قد صدر، لذا حصلت على مصدر shell منه. [...] قمت بإعادة صياغة تحرير سطر الأوامر الشبيه بـ Emacs ليناسب shell. بعد ذلك، أجريتُ محادثةً شيقةً مع ديفيد كورن في مؤتمر USENIX، وكنا على الأرجح الأكثر درايةً بآلية التحكم في مهام Bourne shell آنذاك. كما جلستُ مع فريق كتابة bash أو pdksh (لا أتذكر تحديدًا) وشرحتُ لهم آلية عمل ذلك . ... بعد سنوات، تركتُ BRL، وقضيتُ ثلاث سنوات كمسؤول نظام في جامعة روتجرز، ثم عملتُ في شركة ناشئة صغيرة في فرجينيا. كان هناك محطة عمل MIPS. كنتُ أعمل بجد باستخدام ed... دون تفكير، حاولتُ استعادة مهمة تعمل في الخلفية بكتابة "fg". ولدهشتي، طبعت الصدفة "التحكم في المهام غير مُفعّل". همم، قلتُ. يبدو أن هذه هي رسالة الخطأ التي تظهر لي. كتبتُ "set -J". "تم تفعيل التحكم في المهام". مهلاً! هذه هي الصدفة الخاصة بي. اتضح أن دوغ غوين وضع تعديلاتي في شريط توزيع "System V on BSD" الخاص به، وقد شقت طريقها إلى قاعدة بيانات كود Mach، وبالتالي انتهى الأمر بكل نظام مشتق من Mach مزودًا بها.    

للمزيد من القراءة