بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
تغير الشل shell للمستخدم وبعض المعلومات .
1-بشكل مبسط ما هو الشل shell في لينكس .
-أظن أن أغلبنا سمع مثلا عن bash shell بشكل بسيط جدا الشل هو وسيط بين المستخدم والنظام شيء كمفسر python نكتب الأكواد أو الأوامر داخله ليتم تنفيذ ما كتبناه ويتم عرض النتيجة أو إجراء التغيرات التي طلبناها مثلا إضافة مجلد أو تشغيل برنامج و...إلخ.
-الطرفية أو الترمينال Terminal بشكل بسيط أيضا هي نافذة لنكتب داخلها وليست هي الشل بحد ذاته .
-فإذا الشل كما ذكرت هي لتفسير الأوامر وتنفيذها ويمكن أن يكون الأمر بشكل مباشر أي بشكل تفاعلي مثلا طباعة جملة hello world لاحظو الصورة في الأسفل .
-وأيضا ممكن من خلال كتابة سكربت بداخله أمر الطباعة أو أي أمر أخر ثم إعطاء السكربت صلاحيات التنفيذ ثم إخبار bash shell تنفيذ الاوامر داخل السكربت وطبعا هناك شروط يجب المحافظة عليها عند كتابة سكربت bash , مثل أي لغة برمجة لها قواعد يجب إتباعها وهذا ما يمكن تعلمه و ما يسمى shell scripting وغالبا الدورات التي ستجدوها تكون تتكلم عن bash مثال في الأسفل لإنشاء سكربت وإعطائه صلاحيات التنفيذ ثم تشغيله , ملاحظة ممكن عدم كتابة اللاحقة sh. لكن الأفضل كتابتها لنميز بين الملفات ,إذا اراد أحد أن يجرب يستخدم أي محرر نصوص لا مشكلة انا أستخدم في الشرح nano.
-اﻷن على الرغم ان python لا تعد بالمعنى الحقيقي shell لنظام لينكس لكن لتوضيح الأمور سأقوم بذات الأمثلة لكن من بايثون بشكل تفاعلي وبشكل سكربت ايضا .
عند تشغيل الطرفية أو الترمينال يتم تلقائيا تشغيل الشل الإفتراضي للمستخدم الذي نعمل منه غالبا سيكون bash لكن لدواعي الشرح لنفترض أني وضعت python كشل إفتراضي, على العموم سأدخل على python لأعمل بشكل تفاعلي أي كأنني قمت بتشغيل bash عند فتح الترمينال ونلاحظ أن مفسر بايثون كان الوسيط بيني وبين النظام نعطيه أمر الطباعة وتتم الطباعة.
-الان كتابة سكربت بايثون وتشغيله ونلاحظ التشابه ,كما ذكرت هذه الأمثلة فقط لمحاولة تقريب الصورة قدر الإمكان.
2-إلى هنا أتمنى أن تكون الأمور توضحت قليلا لهذا ننتقل إلى شرح أمر chsh وهي إختصار ل change shell او change your login shell .
-أولا علينا أن نعرف ان هناك أكثر من شل ممكن إستخدامها وكل شل قد يكون له ملفات إعدادات خاصة و قد تختلف طريقة كتابة السكربتات فيه أيضا لكن أشهرها هو bash وهو الأكثر إستخداما في لينكس بشكل إفتراضي الأن لعرض كل الشل المتوفرة مع مسارها نكتب كما في الأسفل الامرين ذات الشيء .
sudo chsh -l
cat /etc/shells
ملاحظة بشكل سريع هناك شيء إسمه nologin وهو يستخدم من قبل service users وهي تعني انه لا يوجد shell يمكن الدخول له,بشكل بسيط ال service user عبارة عن مستخدم ليس له مجلد منزل وله شل nologin ويستخدم للقيام بعمل محدد مثال في الأسفل في الصورة نلاحظ ان مستخدم apache قام بتشغيل خدمة httpd وله شل nologin هذا المستخدم له فقط عمل محدد يقوم به.
-ثانيا لتشغيل أي شل أخر بشكل مؤقت فقط نكتب إسمه مثال على zsh shell وهو شل شبيه ب bash وله ملفات إعدادات خاصة مثلا له ملف خاص غير bashrc. الذي نعرفه, على العموم عند تثبيته من مدير الحزم وتشغيله أول مرة يطلب منك بعض الأعدادات ويعرض لك الملفات الذي يعتمدها ويمكن الدخول على المساعدة من خلال أمر man zsh .
-ثالثا ممكن تغير الشل الإفتراضي للمستخدم الخاص بنا لأي شيء أخر أي سيتم الدخول إلى هذا الشل بشكل إفتراضي دائما, الأمر يتم من خلال الأمر في الأسفل نلاحظ أن إسم المستخدم عندي هو youcef ,ثم بعدها ليتم الأخذ بالتغيرات نسجل خروج logout ثم الدخول.
sudo chsh -s /usr/bin/zsh youcef
ملاحظة أمر echo $0 هو فقط للتوضيح وهو لعرض الشل الحالي الذي نعمل منه ويمكن إستخدام أكثر من أمر مثلا echo $SHELL.
sudo chsh -s /usr/bin/bash youcef
3-لعرض كل المستخدمين لدينا وأي شل يستخدم نستعرض ملف passwd .
cat /etc/passwd
-ممكن التحديد أكثر مثلا عرض المعلومات عن مستخدم youcef .
cat /etc/passwd |grep youcef
grep youcef /etc/passwd
أخيرا بعيدا عن التعريفات المعقدة لنأخذ bash كمثال ,بشكل بسيط ال bash هو برنامج مثل أي برنامج له مهمة محددة أن يكون وسيط بين المستخدم وقلب النظام ,أما shell scripting هي قواعد الكتابة واللغة التي يفهمها الشل المستخدم مثلا سطر echo hello world , أما السكربت script هو الملف نفسه الذي يحتوي أسطر الأوامر شيء كملف myscript.sh أتمنى أن تكون الأمور توضحت.