ما الفرق بين .bashrc و .profile على Linux؟

نشرت: 2022-09-29
كمبيوتر محمول Linux يعرض موجه bash
fatmawati achmad zaenuri / Shutterstock.com

يؤدي تسجيل الدخول إلى جهاز Linux يعمل بنظام Bash إلى قراءة ملفات معينة. يقومون بتكوين بيئة shell الخاصة بك. لكن الملفات التي تتم قراءتها ومتى يمكن أن تكون مربكة. هذا ما يحدث بالفعل.

أنواع شل المختلفة

يتم تحديد البيئة التي تحصل عليها عند تشغيل shell من خلال الإعدادات الموجودة في ملفات التكوين أو ملفات التعريف. تحتوي هذه على معلومات تحدد أشياء مثل ألوان النص وموجه الأوامر والأسماء المستعارة والمسار الذي يتم البحث فيه عن الملفات القابلة للتنفيذ عند كتابة اسم البرنامج.

يوجد عدد من الملفات المختلفة - في مواقع مختلفة في نظام الملفات - حيث يتم تخزين هذه الإعدادات. ولكن قبل أن ندرس الملفات التي تمت قراءتها عند تشغيل shell ، نحتاج إلى أن نكون واضحين بشأن نوع الصدفة التي تستخدمها.

ماذا يحدث بالضبط عند تشغيل جهاز الكمبيوتر الخاص بك؟
ذات الصلة ما يحدث بالضبط عند تشغيل جهاز الكمبيوتر الخاص بك؟

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

نوع الصدفة الذي تحصل عليه عند فتح نافذة طرفية هو قشرة غير مسجلة. لا تحتاج إلى المصادقة لإطلاق shell عندما تكون مسجلاً الدخول بالفعل. إن قذائف تسجيل الدخول وغير تسجيل الدخول هي قذائف تفاعلية. يمكنك استخدامها عن طريق كتابة التعليمات والضغط على مفتاح "Enter" وقراءة الردود التي تظهر على الشاشة.

هناك أيضًا قذائف غير تفاعلية أيضًا. هذه هي أنواع القذائف التي يتم إطلاقها عند تنفيذ البرنامج النصي. تم إطلاق البرنامج النصي في غلاف جديد. يحدد رمز shebang #!/bin/bash في الجزء العلوي من البرنامج النصي نوع الغلاف الذي يجب استخدامه.

 #! / بن / باش

صدى -e "مرحبًا ، العالم! \ n"

سيتم تشغيل هذا البرنامج النصي في غلاف Bash غير تفاعلي. لاحظ أنه على الرغم من أن الصدفة غير تفاعلية ، يمكن أن يكون البرنامج النصي نفسه كذلك. يطبع هذا البرنامج النصي في نافذة المحطة ، ويمكنه بسهولة قبول إدخال المستخدم.

ذات صلة: 9 أمثلة على Bash Script لتبدأ على Linux

قذائف غير تفاعلية

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

يمكنك اختبار ما إذا كانت shell تفاعلية أم لا من خلال النظر إلى الخيارات التي تم تمريرها إليها كمعلمات سطر أوامر. إذا كان هناك حرف "i" في الخيارات ، فإن shell يكون تفاعليًا. تحتوي المعلمة الخاصة Bash $- على معلمات سطر الأوامر للقشرة الحالية.

 [[$ - == * i *]] && صدى "تفاعلي" || صدى "غير تفاعلي" 

اختبار Bash لتحديد جلسات shell التفاعلية وغير التفاعلية

لنقم بإنشاء اسم مستعار يسمى xc والذي سيعني "القط". سوف نتحقق أيضًا من أن لدينا مجموعة متغير $PATH .

 الاسم المستعار xc = القط
 صدى $ PATH 

تعيين اسم مستعار وترديد قيمة $ PATH

سنحاول الوصول إلى كلاهما من داخل هذا البرنامج النصي الصغير. انسخ هذا النص في محرر واحفظه باسم "int.sh."

 #! / بن / باش

xc ~ / text.dat
صدى "Variable = $ PATH"

سنحتاج إلى استخدام chmod لجعل البرنامج النصي قابلاً للتنفيذ.

 chmod + x int.sh 

استخدام chmod لجعل نص برمجي قابل للتنفيذ

لنقم بتشغيل البرنامج النصي الخاص بنا:

 ./int.sh 

تشغيل برنامج نصي لا يمكنه الوصول إلى اسم مستعار ولكن يمكنه الوصول إلى متغيرات البيئة الموروثة

في غلافه غير التفاعلي ، لا يمكن للبرنامج النصي الخاص بنا استخدام الاسم المستعار ، ولكن يمكنه استخدام متغير البيئة. تعد الأصداف التفاعلية أكثر إثارة للاهتمام في استخدامها لملفات التعريف والتكوين.

ذات صلة: كيفية تعيين متغيرات البيئة في Bash على Linux

قذائف تسجيل الدخول التفاعلية

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

على الخوادم التي لم يتم تثبيت بيئة سطح مكتب بها ، يمكنك تسجيل الدخول مباشرة إلى غلاف تفاعلي. يمكنك القيام بنفس الشيء على كمبيوتر سطح المكتب إذا تركت بيئة سطح المكتب ووصلت إلى محطة طرفية. في جنوم ، يمكنك القيام بذلك باستخدام تركيبة المفاتيح Ctrl + Alt + F3. للعودة إلى جلسة جنوم ، اضغط على مجموعة المفاتيح Ctrl + Alt + F2. الصدفة التي تتصل بها عبر SSH هي أيضًا قذيفة تسجيل دخول.

يمكن تعيين ملفات التعريف والتكوين التي تم استدعاؤها باستخدام متغيرات البيئة ، بحيث يمكن أن تختلف من توزيع إلى توزيع. علاوة على ذلك ، لا يتم استخدام جميع الملفات من قبل كل توزيع. في تثبيت Bash العام ، تقرأ أصداف تسجيل الدخول التفاعلية ملف "/ etc / profile". هذا يحمل خيارات تكوين shell على مستوى النظام. في حالة وجودها ، يقرأ هذا الملف أيضًا ملفات مثل "/etc/bash.bashrc" و "/ usr / share / bash-complete / bash_completion".

ثم يبحث Bash عن ملف “~ / .bash_profile”. إذا لم يكن موجودًا ، يبحث Bash عن ملف “~ / .bash_login”. إذا لم يكن هذا الملف موجودًا ، فسيحاول Bash العثور على ملف ".profile". بمجرد العثور على أحد هذه الملفات وقراءته ، يتوقف Bash عن البحث. لذلك في معظم الحالات ، من غير المحتمل أن تتم قراءة "~ / .profile" على الإطلاق.

غالبًا ، ستجد شيئًا كهذا في “~ / .bash_profile” أو ، كنوع من الدعم ، في ملف “~ / .profile” الخاص بك:

 # في حالة تشغيل باش
إذا [-n "$ BASH_VERSION"] ؛ ومن بعد
  # تشمل الباشرك ان وجدت
  إذا [-f "$ HOME / .bashrc"] ؛ ومن بعد
    . "$ HOME / .bashrc"
  فاي
فاي

يتحقق هذا من أن الصدفة النشطة هي Bash. إذا كان الأمر كذلك ، فإنه يبحث عن ملف “~ / .bashrc” ويقرأه إذا تم العثور عليه.

قذائف تفاعلية بدون تسجيل دخول

يقرأ غلاف Bash التفاعلي غير المرتبط بتسجيل الدخول "/etc/bash.bashrc" ثم يقرأ ملف "~ / .bashrc". يتيح ذلك لـ Bash الحصول على إعدادات على مستوى النظام ومخصصة للمستخدم.

يمكن تغيير هذا السلوك باستخدام علامات التجميع عند تجميع Bash ، ولكن سيكون من الظرف النادر والغريب أن تصادف نسخة من Bash لا تصدر ملف "/etc/bash.bashrc" وتقرأه.

في كل مرة تفتح فيها نافذة طرفية على سطح المكتب الخاص بك ، يتم استخدام هذين الملفين لتكوين بيئة الغلاف التفاعلي الذي لا يقوم بتسجيل الدخول. يحدث الشيء نفسه مع الأصداف التي تطلقها التطبيقات ، مثل النافذة الطرفية في Geany IDE.

أين يجب أن تضع كود التكوين الخاص بك؟

أفضل مكان لوضع كود التخصيص الشخصي الخاص بك هو في ملف “~ / .bashrc”. يمكن تعريف الأسماء المستعارة ووظائف الصدفة في "~ / .bashrc" ، وستتم قراءتها وستكون متاحة لك في جميع الأصداف التفاعلية.

إذا لم يقرأ التوزيع الخاص بك "~ / .bashrc" في قذائف تسجيل الدخول ، وكنت ترغب في ذلك ، أضف هذا الرمز إلى ملف "~ / .bash_profile".

 # في حالة تشغيل باش
إذا [-n "$ BASH_VERSION"] ؛ ومن بعد
  # تشمل الباشرك ان وجدت
  إذا [-f "$ HOME / .bashrc"] ؛ ومن بعد
    . "$ HOME / .bashrc"
  فاي
فاي

النمطية هي الأفضل

إذا كان لديك الكثير من الأسماء المستعارة ، أو إذا كنت تريد استخدام نفس الأسماء المستعارة عبر عدد من الأجهزة ، فمن الأفضل تخزينها في ملف خاص بها ، ونفس الشيء مع وظائف shell الخاصة بك. يمكنك استدعاء هذه الملفات من ملف “~ / .bashrc” الخاص بك.

على حاسوبنا التجريبي ، يتم تخزين الأسماء المستعارة في ملف يسمى “.bash_aliases” وملف يسمى “.bash_functions” يحمل وظائف الصدفة.

يمكنك قراءتها من داخل ملف “~ / .bashrc” الخاص بك مثل هذا:

 # قراءة في الأسماء المستعارة الخاصة بي
إذا [-f ~ / .bash_aliases] ؛ ومن بعد
  . ~ / .bash_aliases
فاي

# قراءة في وظائف شل بلدي
إذا [-f ~ / .bash_functions] ؛ ومن بعد
  . ~ / .باش_وظائف
فاي 
كيفية إنشاء أسماء مستعارة ووظائف شل على لينكس
ذات صلة كيفية إنشاء الأسماء المستعارة ووظائف شل على لينكس

يتيح لك ذلك نقل الأسماء المستعارة والوظائف بسهولة بين أجهزة الكمبيوتر. تحتاج فقط إلى إضافة الأسطر أعلاه إلى ملف "~ / .bashrc" على كل جهاز كمبيوتر ونسخ الملفات التي تحتوي على الأسماء المستعارة ووظائف shell إلى الدليل الرئيسي على كل جهاز كمبيوتر.

هذا يعني أنك لست بحاجة إلى نسخ كافة التعريفات من “~ / .bashrc” على أحد أجهزة الكمبيوتر إلى ملفات “~ / .bashrc” على كل من أجهزة الكمبيوتر الأخرى. إنه أيضًا أفضل من نسخ ملف "~ / .bashrc" بأكمله بين أجهزة الكمبيوتر ، خاصة إذا كانت تقوم بتشغيل Bash على توزيعات مختلفة.

في تلخيص

الملفات التي تحتاج حقًا إلى معرفتها هي:

  • / etc / profile : إعدادات التكوين على مستوى النظام. تستخدم بواسطة قذائف تسجيل الدخول.
  • ~ / .bash_profile : يستخدم للاحتفاظ بالإعدادات للمستخدمين الفرديين. تستخدم بواسطة قذائف تسجيل الدخول.
  • ~ / .bashrc : يستخدم للاحتفاظ بالإعدادات للمستخدمين الفرديين. تستخدم بواسطة قذائف تفاعلية غير مسجلة. قد يتم استدعاؤها أيضًا من ملف “~ / .bash_profile” أو ملف “~ / .profile” لقذائف تسجيل الدخول.

إحدى الطرق الملائمة هي وضع إعداداتك الشخصية في "~ / .bashrc" ، وتأكد من أن ملف "~. / bash_profile" يستدعي الملف "~ / .bashrc". هذا يعني أن إعداداتك الشخصية محفوظة في ملف واحد. ستحصل على بيئة شل متسقة عبر قذائف تسجيل الدخول وغير تسجيل الدخول. يعد الجمع بين هذا الأمر وتخزين الأسماء المستعارة ووظائف shell في ملفات غير تابعة للنظام حلاً أنيقًا وقويًا.