تقوم أجهزة Linux التي تعمل بنظام Bash بقراءة ملفات معينة عند تسجيل الدخول لتكوين بيئة shell الخاصة بك. ولكن تحديد الملفات التي تتم قراءتها ومتى يمكن أن يكون أمرًا مربكًا، مما يجعل من الصعب معرفة ما إذا كان يجب تعديل ملف .bashrc أو ملف .bash_profile أو ملف تكوين آخر. إليك ما يجب معرفته.
أنواع مختلفة من القذائف
يتم تحديد البيئة التي تحصل عليها عند تشغيل shell من خلال الإعدادات الموجودة في ملفات التكوين أو ملفات التعريف. تحتوي هذه الملفات على معلومات تحدد أشياء مثل ألوان النص، وموجه الأوامر، والأسماء المستعارة، والمسار الذي يتم البحث فيه عن الملفات القابلة للتنفيذ عند كتابة اسم برنامج.
يوجد عدد من الملفات المختلفة في مواقع مختلفة في نظام الملفات حيث يتم تخزين هذه الإعدادات. ولكن قبل أن نتطرق إلى الملفات التي تتم قراءتها عند تشغيل shell، نحتاج إلى توضيح نوع shell الذي تستخدمه.
غلاف تسجيل الدخول هو غلاف تقوم بتسجيل الدخول إليه. عندما تقوم بتشغيل جهاز الكمبيوتر وتسجيل الدخول، يوجد غلاف تسجيل دخول أسفل بيئة سطح المكتب الرسومية. إذا قمت بالاتصال بجهاز كمبيوتر آخر عبر اتصال SSH، فسوف تقوم بتسجيل الدخول إلى غلاف تسجيل الدخول أيضًا.
إن نوع الواجهة التي تحصل عليها عند فتح نافذة طرفية هي واجهة غير مخصصة لتسجيل الدخول. ولا تحتاج إلى المصادقة لتشغيل واجهة عندما تكون قد سجلت الدخول بالفعل. إن الواجهة المخصصة لتسجيل الدخول والواجهة غير المخصصة لتسجيل الدخول عبارة عن واجهات تفاعلية. يمكنك استخدامها عن طريق كتابة التعليمات والضغط على مفتاح “Enter” وقراءة الاستجابات التي تظهر على الشاشة.
توجد أيضًا أصداف غير تفاعلية. وهي نوع الأصداف التي يتم تشغيلها عند تنفيذ البرنامج النصي. يتم تشغيل البرنامج النصي في أصداف جديدة. كوخ
#!/bin/bash
في الجزء العلوي من البرنامج النصي يتم تحديد shell الذي يجب استخدامه.
#!/bin/bashecho -e "Hello, World!\n"
سيتم تشغيل هذا البرنامج النصي في غلاف Bash غير تفاعلي. لاحظ أنه على الرغم من أن الغلاف غير تفاعلي، إلا أن البرنامج النصي نفسه يمكن أن يكون كذلك. يتم طباعة هذا البرنامج النصي في نافذة المحطة الطرفية، ويمكنه بسهولة قبول إدخال المستخدم.
الأصداف غير التفاعلية
لا تقرأ الأصداف غير التفاعلية أي ملفات تعريف عند تشغيلها. إنها ترث متغيرات البيئة، لكنها لن تعرف أي شيء عن الأسماء المستعارة، على سبيل المثال، سواء تم تعريفها على سطر الأوامر أو في ملف تكوين.
يمكنك اختبار ما إذا كانت الواجهة تفاعلية أم لا من خلال النظر إلى الخيارات التي تم تمريرها إليها كمعلمات سطر أوامر. إذا كان هناك “i” في الخيارات، فإن الواجهة تفاعلية. معلمة خاصة بالباش$- يحتوي على معلمات سطر الأوامر للغلاف الحالي.
(( $- == *i* )) && echo 'Interactive' || echo 'Non-interactive'
دعونا ننشئ اسمًا مستعارًا يسمى xc وهذا يعني “قطة”. وسوف نتحقق أيضًا من أن لدينا $PATH مجموعة متغيرة.
alias xc=cat
echo $PATH
سنحاول الوصول إلى كليهما من داخل هذا البرنامج النصي الصغير. انسخ هذا البرنامج النصي إلى محرر واحفظه باسم “int.sh”.
#!/bin/bashxc ~/text.dat
echo "Variable=$PATH"
سوف نحتاج إلى استخدام chmod لجعل البرنامج النصي قابلاً للتنفيذ.
chmod +x int.sh
دعونا ننفذ البرنامج النصي الخاص بنا:
./int.sh
في غلافها غير التفاعلي، لا يمكن لنصنا استخدام الاسم المستعار، لكنه يستطيع استخدام متغير البيئة. الغلافات التفاعلية أكثر إثارة للاهتمام في استخدامها لملفات التعريف والتكوين.
قذائف تسجيل الدخول التفاعلية
هناك نوعان من واجهات تسجيل الدخول التفاعلية. الأول هو الواجهة التي تسمح لك بتسجيل الدخول إلى جهاز الكمبيوتر الخاص بك. على أجهزة سطح المكتب، تكون هذه الواجهة عادةً هي الواجهة الأساسية لبيئة سطح المكتب لديك. سواء كنت تستخدم بيئة سطح مكتب ذات نوافذ أو بلاط، فيجب أن يكون هناك شيء ما يصادقك على نظام Linux ويسمح لك بتسجيل الدخول.
على الخوادم التي لا تحتوي على بيئة سطح مكتب مثبتة، يمكنك تسجيل الدخول مباشرة إلى غلاف تفاعلي. يمكنك القيام بنفس الشيء على جهاز كمبيوتر سطح المكتب إذا خرجت من بيئة سطح المكتب ووصلت إلى محطة طرفية. على GNOME، يمكنك القيام بذلك باستخدام تركيبة المفاتيح Ctrl+Alt+F3. للعودة إلى جلسة GNOME الخاصة بك، اضغط على تركيبة المفاتيح Ctrl+Alt+F2. الغلاف الذي تتصل به عبر SSH هو غلاف تسجيل دخول أيضًا.
يمكن تعيين ملفات التعريف والتكوين التي يتم استدعاؤها باستخدام متغيرات البيئة، وبالتالي يمكن أن تختلف من توزيع إلى آخر. علاوة على ذلك، لا يتم استخدام جميع الملفات بواسطة كل توزيع. في تثبيت Bash عام، تقرأ غلافات تسجيل الدخول التفاعلية ملف “/etc/profile”. يحتوي هذا الملف على خيارات تكوين غلاف النظام بالكامل. إذا كانت موجودة، يقرأ هذا الملف أيضًا ملفات مثل “/etc/bash.bashrc” و”/usr/share/bash-completion/bash_completion”.
ثم يبحث Bash عن ملف “~/.bash_profile”. إذا لم يكن موجودًا، يبحث Bash عن ملف “~/.bash_login”. إذا لم يكن هذا الملف موجودًا، يحاول Bash العثور على ملف “.profile”. بمجرد العثور على أحد هذه الملفات وقراءته، يتوقف Bash عن البحث. لذا في معظم الحالات، من غير المرجح أن تتم قراءة “~/.profile” على الإطلاق.
في كثير من الأحيان، ستجد شيئًا كهذا في ملف “~/.bash_profile” أو، كنوع من الدعم، في ملف “~/.profile”:
# if running bashif ( -n "$BASH_VERSION" ); then
# include .bashrc if it exists
if ( -f "$HOME/.bashrc" ); then
. "$HOME/.bashrc"
fi
fi
يتحقق هذا من أن الغلاف النشط هو Bash. إذا كان كذلك، فإنه يبحث عن ملف “~/.bashrc” ويقرأه إذا تم العثور عليه.
صفحات تفاعلية بدون تسجيل دخول
يقرأ غلاف Bash التفاعلي غير المخصص لتسجيل الدخول “/etc/bash.bashrc” ثم يقرأ ملف “~/.bashrc”. يتيح هذا لـ Bash الحصول على إعدادات على مستوى النظام وإعدادات خاصة بالمستخدم.
يمكن تغيير هذا السلوك باستخدام علامات التجميع عند تجميع Bash، ولكن سيكون من النادر والغريب أن تجد إصدارًا من Bash لا يقوم بقراءة ملف “/etc/bash.bashrc” أو التعرف عليه.
في كل مرة تفتح فيها نافذة طرفية على سطح المكتب، يتم استخدام هذين الملفين لتكوين بيئة غلاف التفاعل غير المخصص لتسجيل الدخول. ويحدث نفس الشيء بالنسبة لأغلفة التطبيقات التي يتم تشغيلها، مثل نافذة الطرفية في جيني IDE.
أين يجب أن تضع رمز التكوين الخاص بك؟
أفضل مكان لوضع كود التخصيص الشخصي الخاص بك هو في ملف “~/.bashrc”. يمكن تعريف الأسماء المستعارة ووظائف shell في “~/.bashrc”، وسيتم قراءتها وإتاحتها لك في جميع shells التفاعلية.
إذا لم يقرأ توزيعك ملف “~/.bashrc” في غلافات تسجيل الدخول، وتريد أن يفعل ذلك، أضف هذا الكود إلى ملف “~/.bash_profile”.
# if running bashif ( -n "$BASH_VERSION" ); then
# include .bashrc if it exists
if ( -f "$HOME/.bashrc" ); then
. "$HOME/.bashrc"
fi
fi
الوحدات النمطية هي الأفضل
إذا كان لديك الكثير من الأسماء المستعارة، أو كنت ترغب في استخدام نفس الأسماء المستعارة عبر عدد من الأجهزة، فمن الأفضل تخزينها في ملفات خاصة بها، وكذلك الأمر مع وظائف shell. يمكنك استدعاء هذه الملفات من ملف “~/.bashrc”.
على جهاز الكمبيوتر الاختباري الخاص بنا، يتم تخزين الأسماء المستعارة في ملف يسمى “.bash_aliases” وملف يسمى “.bash_functions” يحتوي على وظائف shell.
يمكنك قراءتها من داخل ملف “~/.bashrc” الخاص بك مثل هذا:
# read in my aliasesif ( -f ~/.bash_aliases ); then
. ~/.bash_aliases
fi
# read in my shell functions
if ( -f ~/.bash_functions ); then
. ~/.bash_functions
fi
يتيح لك هذا نقل الأسماء المستعارة والوظائف بسهولة بين أجهزة الكمبيوتر. ما عليك سوى إضافة الأسطر أعلاه إلى ملف “~/.bashrc” على كل جهاز كمبيوتر ونسخ الملفات التي تحتوي على الأسماء المستعارة والوظائف إلى الدليل الرئيسي على كل جهاز كمبيوتر.
هذا يعني أنك لست بحاجة إلى نسخ كافة التعريفات من “~/.bashrc” على جهاز كمبيوتر واحد إلى ملفات “~/.bashrc” على كل من أجهزة الكمبيوتر الأخرى. كما أنه أفضل من نسخ ملف “~/.bashrc” بالكامل بين أجهزة الكمبيوتر، وخاصة إذا كانت تعمل بنظام Bash على توزيعات مختلفة.
في ملخص
الملفات التي تحتاج حقًا إلى معرفتها هي:
- /إلخ/الملف الشخصي:إعدادات تكوين على مستوى النظام. تستخدمها واجهات تسجيل الدخول.
- ~/.bash_profile:يستخدم لحفظ الإعدادات للمستخدمين الفرديين. يستخدمه غلاف تسجيل الدخول.
- ~/.bashrc:يستخدم لحفظ الإعدادات للمستخدمين الفرديين. يستخدم بواسطة الأصداف التفاعلية غير المخصصة لتسجيل الدخول. يمكن أيضًا استدعاؤه من ملف “~/.bash_profile” أو “~/.profile” الخاص بأصداف تسجيل الدخول.
تتمثل إحدى الطرق المريحة في وضع إعداداتك الشخصية في “~/.bashrc”، والتأكد من أن ملف “~./bash_profile” الخاص بك يستدعي ملف “~/.bashrc”. وهذا يعني أن إعداداتك الشخصية محفوظة في ملف واحد. وستحصل على بيئة shell متسقة عبر الأصداف التي يمكن تسجيل الدخول إليها وغير التي لا يمكن تسجيل الدخول إليها. والجمع بين هذا وتخزين الأسماء المستعارة ووظائف shell في ملفات غير تابعة للنظام هو حل أنيق وقوي.