كيف يعمل PATH في Bash

How Does Path Work Bash



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

هنا تأتي متغيرات البيئة في اللعب ، وخاصة متغير PATH. هذا المتغير مسؤول عن إخبار bash أين تبحث عن تلك البرامج. دعونا نتحقق من كيفية عمل PATH وكيفية عرض / تعديل PATH.







متغير البيئة و PATH $

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



PATH هو متغير بيئة يتتبع أدلة معينة. بشكل افتراضي ، يحتوي متغير PATH على المواقع التالية.



  • / البيرة / بن
  • / البيرة / sbin
  • / usr / local / bin
  • / usr / local / sbin
  • /صباحا
  • / sbin
  • / snap / bin (إذا تم تثبيت Snap)

تريد أن ترى ما الدلائل المسجلة حاليا تحت PATH؟ أطلق محطة وتشغيل الأمر التالي.





$رما - طرد - قذف المسار $

هنا ، تشير علامة $ إلى متغير. ال رما - طرد - قذف يقوم الأمر بطباعة قيمة المتغير PATH.



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

على سبيل المثال ، دعنا نختبر باستخدام رما - طرد - قذف أمر. هنا ، أقوم بتشغيل أمر صدى.

$رما - طرد - قذفمرحبا بالعالم!

أين يوجد الملف القابل للتنفيذ الخاص بـ رما - طرد - قذف ؟ قم بتشغيل الأمر التالي لمعرفة ذلك.

$أي رما - طرد - قذف

كما نرى ، فإن رما - طرد - قذف يقع الملف القابل للتنفيذ في / usr / bin / echo. أين يقع؟ هيا نكتشف.

$أي أي

إنه موجود أيضًا في / usr / bin / which. توجد معظم أدوات الأوامر ضمن الدليل / usr / bin. هنا ، يستشير bash PATH للمواقع للبحث عن الملف (الملفات) التنفيذية للأمر.

تعديل المسار

قبل تعديل قيمة PATH ، من المهم أن نفهم هيكلها. قم بتشغيل الأمر مرة أخرى للتحقق من قيمة PATH.

$رما - طرد - قذف المسار $

لاحظ أن كل دليل مفصول بعلامة:.

مضيفا الدليل إلى PATH

لإضافة دليل مخصص إلى PATH ، سنستعين بملف bashrc. إنه نص برمجي خاص يتم تحميل bash في كل مرة تبدأ فيها جلسة bash جديدة. لاحظ أن ملف bashrc فريد لكل مستخدم في نظام Linux.

افتح ملف bashrc في محرر نصي. إذا لم يكن ملف bashrc موجودًا بالفعل ، فسيقوم المحرر بإنشائه تلقائيًا.

$انا قد جئت~/.bashrc

هنا ، هو bashrc الافتراضي الذي يأتي مع Ubuntu. انتقل إلى آخر ملف (إن وجد) وأضف السطر التالي.

$يصدر طريق='المسار $: / '

هنا ، ستكون القيمة الجديدة لمتغير PATH هي المتغير القديم مع الدليل الجديد الذي أضفناه للتو.

احفظ الملف واطلب من bash إعادة تحميله.

$مصدر~/.bashrc

دعنا نتحقق مما إذا تمت إضافة المسار الجديد بنجاح.

$رما - طرد - قذف المسار $

هاهو! تم تحديث المسار بنجاح! الآن ، سيبحث bash أيضًا في المسار الجديد عن الملفات التنفيذية. لدي بالفعل سيناريو demo.sh على سطح المكتب. دعونا نرى ما إذا كان بإمكان bash الاتصال بها دون تحديد الموقع الدقيق.

$demo.sh

نعم ، يمكن لـ bash الاتصال بها مباشرة دون أي مشكلة.

إزالة الدليل من PATH

لا توجد طريقة مباشرة لإضافة / إزالة الدلائل من PATH. دعني أشرح.

قيمة PATH ثابتة بالفعل. ثم ماذا عن خدعة الباشرك؟ Bashrc هو برنامج نصي bash يتم تحميله في كل مرة يبدأ فيها جلسة. في bashrc ، أعلنا للتو أن القيمة الجديدة لـ PATH ستكون قيمتها الافتراضية والدليل المحدد من قبل المستخدم. الآن ، في كل مرة يتم فيها تحميل bash ، ترى أن bashrc تخبرها بتعيين قيمة جديدة لـ PATH وهذا ما تفعله.

وبالمثل ، إذا أردنا إزالة دليل من PATH ، فعلينا إعادة تعيين قيمة مختلفة لـ PATH في bashrc بحيث تستخدم القيمة المعدلة في كل مرة تبدأ فيها bash.

دعونا نلقي نظرة على هذا المثال. أرغب في إزالة الدليل ~ / Desktop من المسار.

$رما - طرد - قذف المسار $ | سيد 's /: ~ / Desktop $ //'

إذا كان الدليل هو / home / wrong / dir ، سيبدو الأمر هكذا.

$رما - طرد - قذف المسار $ | سيد 's /: / home / wrong / dir $ //'

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

افتح bashrc في محرر نصوص وأضف الأسطر التالية. أحتفظ عن قصد بالأسطر السابقة لإثبات أنها تعمل.

$يصدر طريق='$ (echo $ PATH | sed -e 's /: ~ / Desktop $ //')'

بدلاً من ذلك ، يمكنك أيضًا تعيين قيمة PATH يدويًا. إنها عملية شاقة ولكنها أكثر وضوحًا وبساطة.

$يصدر طريق=/usr/محلي/سبين:/usr/محلي/صباحا:/usr/سبين:/usr/صباحا:/سبين:/صباحا:
/usr/ألعاب:/usr/محلي/ألعاب:/يفرقع، ينفجر/صباحا

هنا ، سيتم تعيين قيمة الأمر إلى PATH. احفظ الملف وأعد تحميل bashrc.

$مصدر~/.bashrc

دعونا نتحقق من النتيجة.

$رما - طرد - قذف المسار $

تم تحديث قيمة PATH!

افكار اخيرة

في bash ، المتغير PATH مهم. أي برنامج يتم تشغيله من خلال جلسة bash يرث المتغير ، لذلك من المهم أن يتضمن PATH الأدلة الضرورية فقط. ستؤدي إضافة المزيد من الدليل فقط إلى إضافة التكرار إلى النظام.

لمشاهدة جميع متغيرات البيئة لـ bash ، قم بتشغيل هذا الأمر. سيعيد جزء الأمر الأول جميع متغيرات البيئة وسيقوم الجزء الثاني بفرز الإخراج بترتيب تصاعدي.

$الحسد | نوع

هل تريد إضفاء الإثارة على تجربة باش الخاصة بك؟ تقدم الأسماء المستعارة لـ Bash طريقة فريدة لتسريع وتوابل الأشياء. تعرف على المزيد حول الأسماء المستعارة لـ bash .

يتمتع!