صدفة يونكس

نوافذ أوامر tcsh و sh على سطح مكتب نظام التشغيل Mac OS X Leopard [ 1 ]

صدفة يونكس هي واجهة سطر أوامر لنظام تشغيل شبيه بيونكس . توفر صدفة يونكس لغة أوامر يمكن استخدامها تفاعليًا أو لكتابة سكربتات صدفة . [ 2 ] عادةً ما يعمل المستخدم داخل صدفة يونكس عبر محاكي طرفية ؛ ومع ذلك، يُعد الوصول المباشر عبر اتصالات الأجهزة التسلسلية أو بروتوكول Secure Shell شائعًا لأنظمة الخوادم. على الرغم من أن استخدام صدفة يونكس شائع بين بعض المستخدمين، إلا أن آخرين يفضلون استخدام واجهة رسومية في نظام نوافذ ، مثل تلك المتوفرة في توزيعات لينكس المكتبية أو macOS ، بدلاً من واجهة سطر الأوامر (CLI).

قد يتمكن المستخدم من الوصول إلى عدة واجهات أوامر يونكس، مع ضبط إحداها للتشغيل افتراضيًا عند تسجيل دخوله بشكل تفاعلي. عادةً ما يتم تخزين الخيار الافتراضي في ملف تعريف المستخدم (على سبيل المثال، في ملف passwd المحلي أو في نظام تكوين موزع مثل NIS أو LDAP ). يمكن للمستخدم استخدام واجهات أوامر أخرى متداخلة داخل واجهة الأوامر الافتراضية.

قد توفر واجهة يونكس العديد من الميزات بما في ذلك: تعريف المتغيرات واستبدالها، واستبدال الأوامر ، واستخدام الأحرف البديلة في أسماء الملفات ، وتوجيه التدفق ، وهياكل التحكم في التدفق (اختبار الشروط والتكرار ) ، وسياق دليل العمل ، والمستند هنا .

تاريخ

الأصداف المبكرة

كانت أول واجهة أوامر يونكس هي واجهة تومسون ( sh )، التي كتبها كين تومسون في مختبرات بيل، ووُزِّعت مع الإصدارات من 1 إلى 6 من يونكس، من عام 1971 إلى عام 1975. [ 3 ] على الرغم من بدائيتها وفقًا للمعايير الحديثة، إلا أنها قدمت العديد من الميزات الأساسية المشتركة بين جميع واجهات أوامر يونكس اللاحقة، بما في ذلك التوجيه، وهياكل التحكم البسيطة باستخدام ` if..` و`..` goto، و`..` .بينغ. على الرغم من أنه غير مستخدم حاليًا، إلا أنه لا يزال متاحًا كجزء من بعض أنظمة يونكس القديمة ، مثل الإصدار 6 من يونكس .

استُلهم تصميمه من واجهة Multics ، التي طورتها مهندسة البرمجيات الأمريكية غليندا شرودر عام 1965. وكانت واجهة Multics الخاصة بشرودر بدورها مستوحاة من برنامج RUNCOM الذي عرضه لويس بوزان على فريق Multics. ويُعدّ اللاحقة "rc" في بعض ملفات تهيئة أنظمة يونكس (مثل ".bashrc" أو ".vimrc") من بقايا برنامج RUNCOM الذي شكّل أساس واجهات يونكس. [ 1 ] [ 4 ]

كانت واجهة برمجة تطبيقات PWB أو Mashey shell ، أو sh ، نسخةً متوافقةً مع الإصدارات السابقة من واجهة Thompson shell، قام بتطويرها جون ماشي وآخرون، ووُزِّعت مع نظام التشغيل UNIX المسمى Programmer's Workbench ، في الفترة ما بين عامي 1975 و1977 تقريبًا. ركزت هذه الواجهة على جعل برمجة واجهة المستخدم عمليةً، لا سيما في مراكز الحوسبة المشتركة الكبيرة. أضافت متغيرات واجهة المستخدم (التي كانت بمثابة مقدمة لمتغيرات البيئة ، بما في ذلك آلية مسار البحث التي تطورت لاحقًا إلى $PATH)، وبرامج نصية قابلة للتنفيذ من قِبل المستخدم، ومعالجة المقاطعات. تم توسيع هياكل التحكم من if/goto إلى if/then/else/endif، وswitch/breaksw/endsw، وwhile/end/break/continue. مع انتشار برمجة واجهة المستخدم، دُمجت هذه الأوامر الخارجية في واجهة المستخدم نفسها لتحسين الأداء.

لكن أكثر أنظمة يونكس انتشارًا وتأثيرًا في بداياتها كان نظام بورن وأنظمة سي . وقد استُخدم كلا النظامين كأساس برمجي ونموذج للعديد من الأنظمة المشتقة والمشابهة ذات الميزات الموسعة. [ 5 ]

بورن شيل

كانت صدفة بورن ( sh ) صدفة يونكس جديدة من تطوير ستيفن بورن في مختبرات بيل. [ 6 ] تم توزيعها كصدفة لنظام يونكس الإصدار 7 عام 1979، وقدمت باقي الميزات الأساسية التي تُعتبر مشتركة بين جميع صدفات يونكس اللاحقة، بما في ذلك المستندات المضمنة ، واستبدال الأوامر ، ومتغيرات أكثر عمومية ، وهياكل تحكم مدمجة أكثر شمولاً . تأثرت لغة البرمجة، بما في ذلك استخدام الكلمة المفتاحية المعكوسة لتمييز نهاية الكتلة، بلغة ALGOL 68. [ 7 ] تقليديًا ، يُسمى برنامج صدفة بورن sh، ومساره في تسلسل نظام ملفات يونكس هو /bin/sh . ولكن يتوفر أيضًا عدد من البدائل المتوافقة مع تحسينات وميزات إضافية متنوعة. في العديد من الأنظمة، قد يكون sh رابطًا رمزيًا أو رابطًا صلبًا إلى أحد هذه البدائل:

  • صدفة ألمكويست (ash): كُتبت كبديل لصدفة بورن بموجب ترخيص BSD؛ وتُستخدم غالبًا في البيئات ذات الموارد المحدودة. تعتمد صدفة sh الخاصة بأنظمة FreeBSD و NetBSD (ومشتقاتها) على ash التي تم تحسينها لتتوافق مع معيار POSIX .
  • Bourne-Again shell (bash): كُتب كجزء من مشروع جنو لتوفير مجموعة شاملة من وظائف Bourne Shell. يُمكن العثور على هذا الصدفة مُثبتة وهي الصدفة التفاعلية الافتراضية للمستخدمين على معظم أنظمة لينكس ؛ وهي توفر كلاً من الوضع التفاعلي (الذي يُنفذه GNU Readline) ووضع البرمجة النصية.
  • كورن شل (ksh): نسخة محسّنة من بورن شل، كتبها ديفيد كورن استنادًا إلى مصادر بورن شل [ 8 ] أثناء عمله في مختبرات بيل.
  • كورن شل (pdksh) - ملكية عامة
  • Z shell (zsh): هو غلاف أوامر حديث نسبيًا ومتوافق جزئيًا مع bash . وهو غلاف الأوامر الافتراضي في Kali Linux منذ الإصدار 2020.4 وفي macOS منذ الإصدار 10.15 Catalina .

يُحدد معيار POSIX غلافه القياسي كمجموعة فرعية صارمة من غلاف Korn. من وجهة نظر المستخدم، كان غلاف Bourne يُتعرف عليه فورًا عند تفعيله من خلال رمز سطر الأوامر الافتراضي المميز له، وهو علامة الدولار ( $ ) .

سي شل

تم تصميم واجهة سطر الأوامر C، csh، على غرار لغة البرمجة C ، بما في ذلك هياكل التحكم وقواعد التعبير. وقد كتبها بيل جوي عندما كان طالب دراسات عليا في جامعة كاليفورنيا، بيركلي ، وتم توزيعها على نطاق واسع مع نظام التشغيل BSD Unix . [ 9 ]

قدمت واجهة سطر الأوامر C العديد من الميزات للعمل التفاعلي، بما في ذلك سجل الأوامر وآليات التحرير ، والأسماء المستعارة ، ومكدسات الدليل ، ورمز التلدة ، و cdpath ، والتحكم في المهام ، وتجزئة المسار . في العديد من الأنظمة، قد يكون csh رابطًا رمزيًا أو رابطًا صلبًا إلى TENEX C shell (tcsh)، وهي نسخة محسّنة من النسخة الأصلية لجوي. على الرغم من نسخ الميزات التفاعلية لـ csh إلى معظم واجهات سطر الأوامر الأخرى، إلا أن بنية اللغة لم تُنسخ على نطاق واسع. الواجهة الوحيدة المشابهة هي Hamilton C shell ، التي كتبتها نيكول هاميلتون، والتي وُزعت لأول مرة على نظام التشغيل OS/2 في عام 1988 وعلى نظام التشغيل Windows منذ عام 1992. [ 10 ]

ملفات التكوين

تقرأ واجهات سطر الأوامر ملفات التكوين في ظروف مختلفة. تحتوي هذه الملفات عادةً على أوامر واجهة سطر الأوامر، ويتم تنفيذها عند تحميلها؛ وتُستخدم عادةً لضبط متغيرات مهمة تُستخدم للعثور على الملفات التنفيذية، مثل متغير البيئة PATH ، وغيرها من المتغيرات التي تتحكم في سلوك واجهة سطر الأوامر ومظهرها. يعرض الجدول في هذا القسم ملفات التكوين لواجهات سطر الأوامر الشائعة. [ 11 ]

ملف التكوينشكشcshtcshسحقzsh
/etc/.loginتسجيل الدخولتسجيل الدخول
/etc/csh.cshrcنعمنعم
/etc/csh.loginتسجيل الدخولتسجيل الدخول
~/.tcshrcنعم
~/.cshrcنعمنعم [ أ ]
/etc/ksh.kshrcداخلي.
/etc/sh.shrcint. [ b ]
$ENV (عادةً ~/.kshrc ) [ 12 ]int. [ c ] [ d ]داخلي.int. [ e ]
~/.loginتسجيل الدخولتسجيل الدخول
~/.logoutتسجيل الدخولتسجيل الدخول
/etc/profileتسجيل الدخولتسجيل الدخولتسجيل الدخولتسجيل الدخول [ f ]
~/.profileتسجيل الدخولتسجيل الدخولتسجيل الدخول [ g ]تسجيل الدخول [ f ]
~/.bash_profileتسجيل الدخول [ g ]
~/.bash_loginتسجيل الدخول [ g ]
~/.bash_logoutتسجيل الدخول
ملف ‎~/.bashrcint.+n/login
/etc/zshenvنعم
/etc/zprofileتسجيل الدخول
/etc/zshrcداخلي.
/etc/zloginتسجيل الدخول
/etc/zlogoutتسجيل الدخول
~/.zshenvنعم
~/.zprofileتسجيل الدخول
~/.zshrcداخلي.
~/.zloginتسجيل الدخول
~/.zlogoutتسجيل الدخول

توضيح:

  • يعني الفراغ أن الملف لا تتم قراءته بواسطة الصدفة على الإطلاق.
  • "نعم" تعني أن الملف يُقرأ دائمًا بواسطة shell عند بدء التشغيل.
  • "login" تعني أنه يتم قراءة ملف إذا كانت الصدفة عبارة عن صدفة تسجيل دخول.
  • "n/login" تعني أنه يتم قراءة ملف إذا لم تكن الصدفة صدفة تسجيل دخول.
  • "int." تعني أنه يتم قراءة ملف إذا كانت الصدفة تفاعلية.
  1. فقط في حالةعدم العثور على ملف ~/.tcshrc
  2. الإصدارات الأحدث من بورن شيل فقط
  3. متوفر على الأنظمة التي تدعم خيار "أدوات نقل المستخدم"؛ يجب أن تكون قيمة المتغير مسارًا مطلقًا ، ويتم تجاهله "إذا كانت معرفات المستخدم الحقيقية والفعالة أو معرفات المجموعة الحقيقية والفعالة للمستخدم مختلفة". [ 13 ]
  4. $ENV هو $HOME/.shrc في الإصدارات الأحدث من Bourne Shell
  5. نفس سلوك sh ، ولكن فقط إذا تم استدعاؤه كـ sh (bash 2+)، أو منذ bash 4.2، أيضًا إذا تم استدعاؤه صراحةً في وضع توافق POSIX (مع الخيارات --posix أو -o posix ). [ 14 ]
  6. 1 2 فقط في وضع التوافق sh/ksh (عند استدعائه كـ bash أو sh أو ksh)
  7. 1 2 3 أول ملف قابل للقراءة بالترتيب التالي: ~/.bash_profile ، ~/.bash_login ، و ~/.profile ؛ و ~/.profile فقطإذا تم استدعاؤه كـ sh، أو، بدءًا من Bash 4.2 على الأقل، إذا تم استدعاؤه صراحةً في وضع توافق POSIX (مع الخيارات --posix أو -o posix ).

أصداف أخرى

تتضمن الاختلافات في مفهوم غلاف يونكس التي لا تشتق من غلاف بورن أو غلاف سي ما يلي: [ 15 ]

انظر أيضاً

مراجع

  1. 1 2 توم فان فليك (5 فبراير 1995). "يونكس ومولتيكس" . Multicians.org . تم الاطلاع عليه بتاريخ 14 أغسطس 2012 .
  2. بورن، ستيفن ر. (أكتوبر 1983). "صدفة يونكس" . بايت . ص 187. تم الاطلاع عليه بتاريخ 28 يونيو 2026 . 
  3. "تاريخ منفذ V6 Thompson Shell" . V6shell.org . تم الاطلاع عليه بتاريخ 14 أغسطس 2012 .
  4. لويس بوزان (25 نوفمبر 2000). "أصل الصدفة" . Multicians.org . تم الاطلاع عليه بتاريخ 14 أغسطس 2012 .
  5. نيكولاي بيزروكوف (13 أغسطس 2015). "مقدمة لتاريخ أوامر يونكس" . سوفت بانوراما. مؤرشف من الأصل بتاريخ 8 يونيو 2022. تم الاطلاع عليه بتاريخ 21 أغسطس 2016 .
  6. بورن، ستيفن (5 مارس 2009). "دليل لغات البرمجة: بورن شل، أو sh" (مقابلة). أجراها هوارد دحداح. مجلة كمبيوتر وورلد . مؤرشف من الأصل بتاريخ 16 أغسطس 2022. تم الاطلاع عليه بتاريخ 16 أغسطس 2022 .
  7. " ردًا على: إعادة النظر في المتأخرين في النمو " . تم الاطلاع عليه بتاريخ 20 سبتمبر 2014 .
  8. كورن، ديفيد ج. (26 أكتوبر 1994)، "ksh - لغة عالية المستوى قابلة للتوسيع" ، وقائع ندوة لغات المستوى العالي جدًا لعام 1994 التابعة لـ USENIX ، جمعية USENIX ، تم استرجاعها في 5 فبراير 2015 ، بدلاً من ابتكار لغة نصية جديدة، قمنا ببناء نظام إدخال نماذج عن طريق تعديل Bourne shell، وإضافة الأوامر المدمجة حسب الضرورة.
  9. هارلي هان. "الجدول الزمني لنظامي يونكس/لينكس" . دليل هارلي هان لنظامي يونكس ولينكس .
  10. "ملاحظات إصدار هاميلتون سي شيل لنظام ويندوز 4.0" . تم الاطلاع عليه بتاريخ 20 سبتمبر 2014 .
  11. "أصداف يونكس المختلفة" . unixnote.com. 2010. مؤرشف من الأصل بتاريخ 2016-04-03 . تم الاطلاع عليه بتاريخ 2016-08-21 .
  12. هارلي هان. "تمارين وإجابات الفصل 14... استخدام الصدفة: ملفات التهيئة" . دليل هارلي هان لنظامي يونكس ولينكس .
  13. "لغة أوامر الصدفة" . opengroup.org . تم الاطلاع عليه بتاريخ 15 يونيو 2015 .
  14. "دليل مرجعي لباش: ملفات بدء تشغيل باش" . gnu.org . تم الاطلاع عليه بتاريخ 15 يونيو 2015 .
  15. "منافذ FreeBSD: Shells" . Freebsd.org. 30-03-2014. مؤرشف من الأصل في 12-01-2021 . تم الاطلاع عليه في 05-04-2014 .