قشرة ألمكويست

Almquist shell (المعروف أيضًا باسم A Shell و ash و sh ) هو غلاف يونكس خفيف الوزن كتبه كينيث ألمكويست في أواخر الثمانينيات. في البداية، كان نسخة من متغير System V.4 من غلاف بورن ، وقد حل محل غلاف بورن الأصلي في إصدارات BSD من يونكس التي صدرت في أوائل التسعينيات.

تاريخ

تم إصدار ash لأول مرة عبر منشور على مجموعة أخبار usenet الخاصة بـ comp.sources.unix ، والتي تمت الموافقة عليها وإدارتها بواسطة ريتش سالز في 30 مايو 1989. وقد وُصفت بأنها "إعادة تنفيذ لصدفة النظام الخامس [مع] معظم ميزات تلك الصدفة، بالإضافة إلى بعض الإضافات". [ 1 ]

كان برنامج ash سريعًا وصغيرًا ومتوافقًا تقريبًا مع مواصفات معيار POSIX لصدفة يونكس، لكنه لم يوفر آليات تحرير الأسطر أو سجل الأوامر ، لأن ألمكويست رأى أن هذه الوظائف يجب نقلها إلى برنامج تشغيل الطرفية . ومع ذلك، تدعم الإصدارات الحديثة هذه الوظائف.

المعلومات التالية مستخرجة من معلومات حزمة ash من Slackware v14:

رماد (صدفة الرماد لكينيث ألمكويست)

صدفة أوامر خفيفة الوزن (92 كيلوبايت) متوافقة مع Bourne. مثالية للأجهزة ذات الذاكرة المحدودة، لكنها لا توفر جميع الميزات الإضافية لصدفات مثل bash و tcsh و zsh . تشغل معظم نصوص الصدفة المتوافقة مع صدفة Bourne. تجدر الإشارة إلى أنه في نظام Linux ، يبدو أن معظم النصوص تستخدم على الأقل بعضًا من صيغة bash الخاصة. تُعد نصوص تثبيت Slackware استثناءً ملحوظًا، حيث أن ash هي الصدفة المستخدمة على أقراص التثبيت. يستخدم NetBSD ash كصدفة /bin/sh الخاصة به.

لقطة شاشة لنظام Chimera Linux مع واجهة FreeBSD ash، تُظهر معلومات النظام وبعض أوامر Unix.
نظام التشغيل Chimera Linux مع FreeBSDsh

تم إنتاج العديد من النسخ المتفرعة من إصدار ash الأصلي. [ 2 ] تُثبّت هذه النسخ المشتقة من ash كصدفة افتراضية /bin/shعلى أنظمة FreeBSD [ 3 ] و NetBSD [ 4 ] و DragonFly BSD [ 5 ] [ 6 ] و MINIX [ 2 ] ، وفي بعض توزيعات لينكس ، مثل Alpine Linux [ 7 ] . استخدم MINIX 3.2 إصدار ash الأصلي، الذي اختلفت ميزة الاختبار فيه عن POSIX. [ 8 ] تم استبدال هذا الإصدار من الصدفة في MINIX 3.3. استخدم نظام Android ash حتى Android 4.0 ، وعندها انتقل إلى mksh . [ 9 ] يستخدم Chimera Linux إصدار FreeBSD من ash كصدفة افتراضية، وهو أمر فريد من نوعه في عالم لينكس. [ 10 ]

داش

في عام ١٩٩٧، قام هربرت شو بنقل برنامج ashمن نظام NetBSD إلى نظام Debian Linux . وفي سبتمبر ٢٠٠٢، مع الإصدار ٠.٤.١، أُعيد تسمية هذا البرنامج إلى Dash ( واجهة أوامر Debian Almquist ). كانت أولويات شو الرئيسية هي التوافق مع معيار POSIX والتنفيذ المُبسط. [ ٢ ]

على غرار سابقتها، لا تدعم لغة داش التدويل والترجمة، ولا ترميز الأحرف متعددة البايت (وكلاهما مطلوب في نظام POSIX). ويُعدّ دعم تحرير الأسطر وسجل الأوامر، القائم على مكتبة GNU Readline، اختياريًا .--with-libedit

التبني في دبيان وأوبونتو

نظراً لصغر حجمه، قررت أوبونتو اعتماد داش كواجهة سطر أوامر افتراضية /bin/sh[ 12 ] [ 13 ] في أكتوبر 2006 مع الإصدار 6.10. ويعود سبب استخدام داش إلى سرعة تنفيذ نصوص سطر الأوامر [ 14 ] ، خاصةً أثناء بدء تشغيل نظام التشغيل، مقارنةً بالإصدارات السابقة من ديبيان وأوبونتو التي كانت تستخدم باش لهذا الغرض، على الرغم من أن باش لا تزال واجهة تسجيل الدخول الافتراضية للاستخدام التفاعلي. [ 15 ]

نتيجةً لهذا التحوّل، وُجدت العديد من البرامج النصية التي تستخدم وظائف خاصة بـ Bash ("bashisms") دون تعريفها بشكل صحيح في سطر shebang . [ 16 ] [ 17 ] رُصدت المشكلة لأول مرة في Ubuntu، وقرر القائمون على صيانتها جعل جميع البرامج النصية متوافقة مع معيار POSIX . نُقلت التغييرات لاحقًا إلى Debian، التي اعتمدت Dash كبيئة افتراضية /bin/shفي Debian 6 (Squeeze)، التي صدرت في فبراير 2011. [ 12 ] ونتيجةً لذلك، عُدّلت سياسة Debian للسماح لمطوري البرامج النصية باستخدام بيئة متوافقة إلى حد كبير مع POSIX، باستثناء الإضافات المدمجة في Dash لتسهيل الاستخدام . local[ 18 ] [ 19 ] حدث انتقال مماثل في Slackware Linux، على الرغم من أن إصدارها يعتمد جزئيًا فقط على Dash. [ 2 ]echo -ntest -a / -oash

لينكس المدمج

يُعدّ Ash (وخاصةً نسخة Dash منه) شائعًا أيضًا في أنظمة لينكس المدمجة . تم دمج إصدار Dash 0.3.8-5 في BusyBox ، وهو برنامج تنفيذي شامل يُستخدم غالبًا في هذا المجال. تدعم الإصدارات الحديثة من BusyBox ميزات Bash إضافية مُفعّلة في توزيعات حديثة مثل Alpine Linux و Tiny Core Linux وبرامج تشغيل أجهزة التوجيه المبنية على لينكس مثل OpenWrt و Tomato و DD-WRT .

انظر أيضاً

مراجع

  1. ألمكويست، كينيث (30 مايو 1989). ريتش سالز (محرر). "v19i001: إعادة تنفيذ واجهة سطر الأوامر System V، الجزء 01/08" . مجموعة أخبار يوزنت ، comp.sources.unix.
  2. 1 2 3 4 ماشيك، سفين. "متغيرات الرماد (ألمكويست شل)" . www.in-ulm.de .
  3. "sh(1)" . man.freebsd.org . تم الاطلاع عليه بتاريخ 15-07-2026 .
  4. "sh(1) - صفحات دليل NetBSD" . man.netbsd.org . تم الاطلاع عليه بتاريخ 15-07-2026 .
  5. "DragonFlyBSD: UnixBasics" . www.dragonflybsd.org . تاريخ الاسترجاع: 15 يوليو 2026 .
  6. "صفحات دليل DragonFly الإلكتروني : sh(1)" . man.dragonflybsd.org . تم الاطلاع عليه بتاريخ 15-07-2026 . 
  7. "ملاحظات حول نظام Alpine Linux - د. مايك مورفي" . ww2.coastal.edu . تم الاطلاع عليه بتاريخ 15 يوليو 2026 .
  8. توماس إي. ديكي (2015). "الاختبار مقابل قابلية النقل" . تم الاسترجاع في 1 مارس 2020 .
  9. إليوت هيوز (2018-06-20). "واجهة مستخدم أندرويد وأدواتها المساعدة" . تم الاطلاع عليه بتاريخ 29-02-2020 .
  10. https://github.com/chimera-linux/chimerautils/blob/master/src.freebsd/sh/TOUR
  11. شو، هربرت. "النسخ" . أرشيفات نواة لينكس . تم الاسترجاع في 23 ديسمبر 2023 .
  12. 1 2 "واجهة سطر أوامر غير تفاعلية" . ويكي دبيان . 13 يناير 2020. تم الاطلاع عليه بتاريخ 29 فبراير 2020 .
  13. "Dash كـ /bin/sh" . ويكي أوبونتو . 16-12-2017 . تم الاطلاع عليه بتاريخ 29-02-2020 .
  14. نيل كراويتز (2011). أوبونتو: اختراقات وتخصيصات قوية . جون وايلي وأولاده . ص 178. ISBN  9781118080382.
  15. كريستوفر نيغوس؛ فرانسوا كاين (2011). مجموعة أدوات أوبونتو لينكس . جون وايلي وأولاده. ص 49. ISBN  9781118079140.
  16. إيغيل هاستينغ (2006-09-20). "قد تتعطل البرامج النصية التي تستخدم باش مع الروابط الرمزية الجديدة" . لانشباد . تم الاسترجاع في 29 فبراير 2020 .
  17. كوموشن (21-09-2007). "استخدام dash كـ #!/bin/sh يُسبب العديد من حالات عدم التوافق" . لانشباد . تم الاطلاع عليه بتاريخ 29-02-2020 .
  18. "10. الملفات" . دليل سياسات دبيان الإصدار 4.5.0.2 .
  19. دليل أوامر لينكس العامة من ManKier.comcheckbashisms(1)