تتضمن معظم توزيعات Linux bash shell افتراضيًا ، ولكن يمكنك أيضًا التبديل إلى بيئة shell أخرى. Zsh هو بديل شائع بشكل خاص ، وهناك أصداف أخرى ، مثل الرماد والاندفاع والأسماك و tcsh. ولكن ما هو الفرق ولماذا هناك الكثير؟
ماذا تفعل القذائف؟
عند تسجيل الدخول إلى سطر الأوامر أو بدء تشغيل نافذة طرفية في Linux ، يبدأ النظام برنامج shell. توفر القذائف طريقة قياسية لتوسيع بيئة سطر الأوامر. يمكنك تغيير الصدفة الافتراضية إلى أخرى ، إذا كنت تريد ذلك.
كانت بيئة الصدفة الأولى هي Thompson Shell ، التي تم تطويرها في Bell Labs وتم إصدارها في عام 1971. وقد اعتمدت بيئات Shell على المفهوم منذ ذلك الحين ، مضيفة مجموعة متنوعة من الميزات والوظائف الجديدة وتحسينات السرعة.
على سبيل المثال، والعروض باش الأمر أسماء الانتهاء وملف ، الميزات المتقدمة البرمجة ، و قيادة التاريخ ، والألوان شكلي، والأسماء المستعارة الأوامر، ومجموعة متنوعة من الميزات الأخرى التي لم تكن متاحة في عام 1971 عندما تم الإفراج عن القذيفة الأولى.
يتم استخدام الغلاف أيضًا في الخلفية بواسطة خدمات النظام المختلفة. تتضمن توزيعات Linux العديد من الوظائف المكتوبة كنصوص برمجية. هذه البرامج النصية عبارة عن أوامر ووظائف نصية متقدمة أخرى تعمل في بيئة الصدفة.
القذائف المؤدية إلى Bash: sh و csh و tsh و ksh
أبرز سلف من المقذوفات الحديثة هو قذيفة بورن ، والمعروفة أيضًا باسم “sh” ، والتي سميت على اسم مبتكرها ستيفن بورن ، الذي عمل في مختبرات بيل في AT & T. تم إصداره في عام 1979 ، وأصبح الغلاف الافتراضي على Unix نظرًا لدعمه لاستبدال الأوامر وخطوط الأنابيب والمتغيرات واختبار الحالة والتكرار ، إلى جانب ميزات أخرى. لم يقدم الكثير من التخصيص للمستخدمين ، ولم يدعم مثل هذه التفاصيل الدقيقة مثل الأسماء المستعارة وإكمال الأوامر ووظائف الصدفة (على الرغم من إضافة الأخير في النهاية).
تم تطوير قذيفة C ، أو “csh” ، في أواخر السبعينيات من قبل Bill Joy في جامعة كاليفورنيا ، بيركلي. أضافت مجموعة من العناصر التفاعلية التي يمكن للمستخدمين من خلالها التحكم في أنظمتهم ، مثل الأسماء المستعارة (اختصارات للأوامر الطويلة) ، ومهارات إدارة الوظائف ، وسجل الأوامر ، والمزيد. تم تصميمه على غرار لغة البرمجة C ، حيث تمت كتابة نظام التشغيل Unix نفسه. هذا يعني أيضًا أن مستخدمي Bourne shell كان عليهم تعلم لغة C لإدخال أوامر فيها. أيضًا ، كان لدى csh عدد غير قليل من الأخطاء التي كان على المستخدمين والمبدعين حلها على مدار فترة زمنية طويلة.انتهى الأمر بالناس إلى استخدام Bourne shell للنصوص لأنها تعاملت مع الأوامر غير التفاعلية بشكل أفضل ، لكنهم تمسكوا بصدفة C للاستخدام العادي.
بمرور الوقت ، أصلح العديد من الأشخاص الأخطاء وأضفوا وظائف إلى غلاف C ، وبلغت ذروتها في إصدار محسّن من csh يُعرف باسم “tcsh”. لكن csh كان لا يزال هو الافتراضي على أجهزة الكمبيوتر التي تعمل بنظام Unix وقد أضاف بعض الميزات غير القياسية. عمل David Korn من Bell Labs على KornShell ، أو “ksh” ، والذي حاول تحسين الوضع من خلال التوافق مع لغة Bourne shell مع إضافة العديد من ميزات csh shell. تم إصداره في عام 1983 ، ولكن بترخيص خاص. لم يكن برنامجًا مجانيًا حتى عام 2000 ، عندما تم إصداره مع العديد من تراخيص مفتوحة المصدر.
ولادة باش
كانت واجهة نظام التشغيل المحمولة لـ Unix ، أو POSIX ، استجابة أخرى لتطبيقات csh المحمومة. لقد نجح في إنشاء معيار لتفسير الأوامر (من بين أشياء أخرى) وعكس في النهاية العديد من ميزات KornShell. في نفس الوقت ، كان مشروع جنو يحاول إنشاء نظام تشغيل مجاني متوافق مع يونكس. طور مشروع جنو قشرة برمجيات حرة لتكون جزءًا من نظام التشغيل الحر الخاص به وأطلق عليها اسم “Bourne Again Shell” أو “bash”.
تم تحسين Bash في العقود منذ إصداره الأول في عام 1989 ، لكنه لا يزال الغلاف الافتراضي لمعظم توزيعات Linux اليوم. إنه أيضًا الغلاف الافتراضي لنظام macOS من Apple ومتاح للتثبيت على Windows 10 من Microsoft .
أحدث الأصداف: الرماد ، اندفاعة ، zsh والأسماك
بينما استقر مجتمع Linux على Bash في السنوات التي تلت ذلك ، لم يتوقف المطورون عن إنشاء قذائف جديدة عندما تم إصدار Bash لأول مرة منذ 28 عامًا.
ابتكر كينيث المكيست استنساخًا من قوقعة بورن يُعرف باسم صدفة المقويش ، أو “الرماد” أو أحيانًا “sh”. كان أيضًا متوافقًا مع POSIX وأصبح الغلاف الافتراضي على BSD ، وهو فرع مختلف من Unix. قشرة الرماد أخف من bash ، مما يجعلها شائعة على أنظمة Linux المضمنة. إذا كان لديك هاتف Android متجذر مع BusyBox مثبتًا ، أو أي جهاز آخر مزود بحزمة برنامج BusyBox ، فأنت تستخدم كود ash.
طوّرت دبيان بيئة صدفة قائمة على الرماد وسمتها “داش”. إنه مصمم ليكون خفيف الوزن ومتوافقًا مع POSIX ، لذا فهو أسرع من Bash ، لكنه لن يحتوي على جميع ميزاته. يستخدم Ubuntu غلاف لوحة القيادة باعتباره غلافه الافتراضي للمهام غير التفاعلية ، مما يؤدي إلى تسريع البرامج النصية للقذيفة والمهام الأخرى التي تعمل في الخلفية. لا يزال Ubuntu يستخدم bash للأصداف التفاعلية ، ولكن لا يزال لدى المستخدمين بيئة تفاعلية كاملة الميزات.
أحد الأصداف الأحدث والأكثر شهرة هو Z shell أو “zsh”. تم إنشاء zsh بواسطة Paul Falstad في عام 1990 ، وهو عبارة عن غلاف من طراز Bourne يحتوي على الميزات التي ستجدها في bash ، وأكثر من ذلك. على سبيل المثال ، يحتوي zsh على التدقيق الإملائي ، والقدرة على مراقبة عمليات تسجيل الدخول / الخروج ، وبعض وظائف البرمجة المضمنة مثل كود البايت ، ودعم تدوين بناء الجملة العلمي ، ويسمح بحساب الفاصلة العائمة ، والمزيد من الوظائف.
صدفة أخرى أحدث هي Friendly Interactive Shell ، أو “الأسماك” ، التي تم إصدارها في عام 2005. وهي تحتوي على صيغة سطر أوامر فريدة تم تصميمها لتكون أسهل قليلاً في التعلم ، ولكنها ليست مشتقة من Bourne shell أو C shell. . انها الصورة فكرة مثيرة للاهتمام، ولكن ما تتعلمه باستخدام السمك لا يساعد بالضرورة استخدام باش وقذائف أخرى مستمدة من بورن.
أيهما أختار؟ (ولماذا تحظى Zsh بشعبية)
ليس من الضروري اختيار قذيفة. نظام التشغيل الخاص بك يختار الصدفة الافتراضية نيابة عنك ، ويكون هذا الخيار دائمًا تقريبًا bash. اجلس أمام توزيعة Linux ، أو حتى Mac ، وستكون لديك دائمًا بيئة bash shell. يحتوي Bash على عدد غير قليل من الميزات المتقدمة ، ولكن من المحتمل ألا تستخدمها إلا إذا كنت تقوم ببرمجة البرامج النصية للقذيفة.
في أنظمة Linux أو أنظمة BSD المضمنة ، سوف ينتهي بك الأمر مع ash shell. لكن الرماد عبارة عن قشرة مستندة إلى بورن وهي صديقة إلى حد كبير. أي معرفة لديك عن استخدام bash ستنتقل إلى استخدام ash أو dash shell ، على الرغم من أن بعض ميزات البرمجة النصية المتقدمة غير متوفرة في هذا الهيكل خفيف الوزن.
تقريبًا جميع القذائف التي ستجدها تستند إلى Bourne وتعمل بطريقة مماثلة ، بما في ذلك zsh.
هذا هو سبب شعبية zsh. تتوافق هذه الصدفة الجديدة مع bash ، ولكنها تتضمن المزيد من الميزات. توفر قذيفة zsh تدقيقًا إملائيًا مدمجًا ، وإكمال سطر أوامر محسّنًا ، ووحدات قابلة للتحميل تعمل كمكونات إضافية لقذفتك ، أو أسماء مستعارة عامة تسمح لك بتسمية أسماء الملفات المستعارة ، أو أي شيء آخر في سطر الأوامر بدلاً من الأوامر فقط ، والمزيد من الموضوعات الدعم. إنه يشبه bash ، ولكن مع الكثير من الإضافات والوظائف الإضافية والخيارات القابلة للتكوين التي قد تقدرها إذا كنت تقضي الكثير من الوقت في سطر الأوامر.
إذا كنت معتادًا على bash ، فيمكنك التبديل إلى zsh دون تعلم صيغة مختلفة ؛ سوف تحصل فقط على وظائف إضافية. إذا كنت معتادًا على zsh ، فيمكنك التبديل إلى bash دون تعلم بنية مختلفة ، ولن تتمكن من الوصول إلى هذه الوظائف.
” Oh My ZSH” هي أداة تساعدك على تمكين ملحقات zsh بسهولة أكبر والتبديل بين السمات المعدة مسبقًا ، وتخصيص صدفة zsh بسرعة دون قضاء ساعات في تعديل الأشياء.
هناك أيضا قذائف أخرى. على سبيل المثال ، لا يزال غلاف tcsh متاحًا ولا يزال خيارًا. يستخدم FreeBSD tsch كغلاف جذر افتراضي ورماد كغلاف تفاعلي افتراضي. إذا كنت تستخدم برمجة لغة سي بانتظام ، فقد تكون tsch أكثر ملاءمة لك. ومع ذلك ، فهي ليست شائعة مثل bash أو zsh.
كيفية التبديل بين المقذوفات
من السهل التبديل إلى غلاف جديد لاختباره. فقط قم بتثبيت shell من مدير الحزم الخاص بتوزيع Linux واكتب الأمر لبدء shell.
على سبيل المثال ، لنفترض أنك تريد اختبار zsh على Ubuntu. أود تشغيل الأوامر التالية لتثبيتها ثم تشغيلها:
sudo apt install zsh zsh
ثم ستجلس في قذيفة zsh. اكتب ” exit
” في الغلاف للخروج والعودة إلى قوقعتك الحالية.
هذا مؤقت فقط. عندما تفتح نافذة طرفية جديدة أو تسجل الدخول إلى نظامك في سطر الأوامر ، سترى غلافك الافتراضي. لتغيير الصدفة التي تراها عند تسجيل الدخول ، والمعروفة باسم غلاف تسجيل الدخول الخاص بك ، يمكنك بشكل عام استخدام chsh
الأمر ، أو “تغيير شل”.
لاستخدام هذا الأمر ، ستحتاج أولاً إلى العثور على المسار الكامل لصدفتك باستخدام الأمر. على سبيل المثال ، لنفترض أننا نريد التبديل إلى قذيفة zsh. ننفذ الأمر التالي:
cual zsh
في Ubuntu ، يخبرنا هذا أن ثنائي zsh مخزن في / usr / bin / zsh.
قم بتشغيل الأمر التالي ، وأدخل كلمة المرور الخاصة بك ، وسيُطلب منك اختيار غلاف تسجيل دخول جديد:
chsh
وفقًا للأمر السابق ، كنا ندخل /usr/bin/zsh
. سيكون zsh هو الافتراضي لدينا حتى نقوم بتشغيل chsh
الأمر وتغييره مرة أخرى.