كيفية إضافة دليل إلى $PATH في Linux

النقاط الرئيسية

  • PATH هو قائمة بالمواقع التي يتحقق منها نظام التشغيل الخاص بك عند تشغيل أمر ما، مما يسمح لك بتشغيل الملفات القابلة للتنفيذ دون تحديد موقعها الدقيق يدويًا.
  • يبحث shell عن الملفات القابلة للتنفيذ في PATH بترتيب معين، بدءًا من المكونات المضمنة في shell، ثم البحث عبر الدلائل المدرجة من اليسار إلى اليمين.
  • يمكنك إضافة الدلائل إلى PATH باستخدام أمر التصدير، إما مؤقتًا أو بشكل دائم عن طريق تحرير ملفات .bashrc أو .profile. فقط احرص على عدم إضافة علامة النقطتين الأولى لتجنب المخاطر الأمنية.



PATH يعد هذا أحد المتلاعبين الصامتين في خلفية جهاز الكمبيوتر الذي يعمل بنظام Linux. فهو يؤثر بهدوء على تجربة المستخدم الخاصة بك، ولكن لا يوجد شيء مشبوه بشأنه. سنشرح ما يفعله وكيف يمكنك تعديله.


ما هو PATH على Linux، وكيف يعمل؟

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

إذن كيف يعمل هذا الأمر فعليا من الناحية الوظيفية؟

عندما تكتب أمرًا في نافذة المحطة الطرفية وتضغط على مفتاح الإدخال، فأنت تبدأ قدرًا كبيرًا من النشاط قبل أن يتم تنفيذ الأمر حتى.


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

الخطوة الأولى التي تتخذها shell لتحديد موقع الملف القابل للتنفيذ هي تحديد ما إذا كان هناك ملف ثنائي متضمنًا. إذا كان الأمر الذي تستخدمه موجودًا داخل shell نفسه (ملف ثنائي) “shell مدمج”) لا حاجة لمزيد من البحث.

تعتبر عناصر Shell المدمجة هي الأسهل في العثور عليها لأنها جزء لا يتجزأ من Shell. الأمر أشبه بوجودها في حزام الأدوات — فهي معك دائمًا.

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


إذا كنت تريد معرفة ما إذا كان الأمر هو shell مدمج، أو اسم مستعار، أو وظيفة، أو ملف ثنائي مستقل mv /work/unfile، يمكنك استخدام type الأمر كما هو موضح أدناه:

type clear

type cd

اكتب واضحًا في نافذة المحطة الطرفية

هذا يخبرنا أن clear هو ملف ثنائي، والملف الأول الموجود في المسار يقع في /usr/binقد يكون لديك أكثر من إصدار واحد من clear تم تثبيته على جهاز الكمبيوتر الخاص بك، ولكن هذا هو ما سيحاول shell استخدامه.

ومن غير المستغرب، cd هو غلاف مدمج.

كيفية إدراج مسارك

من السهل رؤية ما يوجد في طريقك. ما عليك سوى كتابة ما يلي لاستخدام echo يأمر وطباعة القيمة عقدت في $PATH عامل:

echo $PATH

صدى $PATH في محطة طرفية widnow


المخرج هو قائمة من النقطتين (:) مواقع نظام الملفات المحددة. يبحث shell من اليسار إلى اليمين عبر المسار، ويتحقق من كل موقع نظام ملفات للعثور على ملف قابل للتنفيذ مطابق لتنفيذ الأمر الخاص بك.

يمكننا اختيار طريقنا عبر القائمة لرؤية مواقع نظام الملفات التي سيتم البحث فيها، والترتيب الذي سيتم البحث فيه:

  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
  • /usr/games
  • /usr/local/games
  • /snap/bin

قد لا يكون من الواضح على الفور أن عملية البحث لا تبدأ في دليل العمل الحالي. بل إنها تنتقل عبر الدلائل المدرجة، والدلائل المدرجة فقط.

إذا لم يكن دليل العمل الحالي موجودًا في مسارك، فلن يتم البحث فيه. أيضًا، إذا كانت لديك أوامر مخزنة في أدلة ليست في المسار، فلن يتمكن shell من العثور عليها.


ولإثبات ذلك، قمنا بإنشاء برنامج صغير يسمى rf. عند التنفيذ، rf يطبع اسم الدليل الذي تم تشغيله منه في نافذة المحطة الطرفية. وهو موجود في /usr/local/binلدينا أيضًا إصدارًا أحدث في /dave/work دليل.

نكتب ما يلي which يأمر لإظهار لنا أي إصدار من برنامجنا سوف تجد القشرة وتستخدم:

which rf

أي تردد راديوي موجود في نافذة المحطة الطرفية

يقوم shell بإبلاغ أن الإصدار الذي وجده هو الإصدار الموجود في الدليل الموجود في المسار.

نكتب ما يلي لتشغيله:

rf

rf في نافذة المحطة الطرفية


الإصدار 1.0 من rf يعمل ويؤكد صحة توقعاتنا. الإصدار الذي تم العثور عليه وتنفيذه موجود في /usr/local/bin.

لتشغيل أي إصدار آخر من rf على هذا الكمبيوتر، سيتعين علينا استخدام المسار إلى الملف القابل للتنفيذ على سطر الأوامر، كما هو موضح أدناه:

./work/rf

./work/rf في نافذة المحطة الطرفية

الآن بعد أن أخبرنا الغلاف عن مكان العثور على الإصدار rf نريد تشغيله، فهو يستخدم الإصدار 1.1. إذا فضلنا هذا الإصدار، فيمكننا نسخه إلى /usr/local/bin الدليل واستبدال الدليل القديم.

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


أو ربما قمنا بتنزيل إصدار جديد من rf ونريد أن نجري بعض اختبارات التحقق عليه قبل أن نجعله متاحًا للعامة.

إذا أضفنا دليل العمل الخاص بنا إلى المسار، فإننا نجعل الغلاف يبحث عن إصدارنا. وهذا التغيير لن يؤثر علينا إلا نحن — سيظل الآخرون يستخدمون إصدار rf في /usr/local/bin .

أضف دليلاً إلى PATH الخاص بك

يمكنك استخدام export أمر إلى إضافة دليل الى PATH. يتم بعد ذلك تضمين الدليل في قائمة مواقع نظام الملفات التي يبحث عنها shell. عندما يجد shell ملفًا قابلاً للتنفيذ مطابقًا، فإنه يتوقف عن البحث، لذا يجب التأكد من أنه يبحث في الدليل الخاص بك أولاً، قبل /usr/local/bin.

من السهل القيام بذلك. في مثالنا، نكتب ما يلي لإضافة الدليل الخاص بنا إلى بداية المسار حتى يصبح الموقع الأول الذي يتم البحث فيه:

export PATH=/home/dave/work:$PATH


تصدير PATH=/home/dave/work:$PATH في نافذة المحطة الطرفية

هذا الأمر يحدد $PATH لكي يكون مساويًا للدليل الذي نضيفه، /home/dave/work، ومن ثم المسار الحالي بأكمله.

الأول PATH ليس له علامة الدولار ($). لقد حددنا القيمة لـ PATH. النهائي $PATH يوجد علامة الدولار لأننا نشير إلى المحتويات المخزنة في PATH متغير. لاحظ أيضًا النقطتين (:) بين الدليل الجديد و $PATH اسم المتغير.

دعونا نرى كيف يبدو المسار الآن:

echo $PATH

صدى $PATH في نافذة المحطة الطرفية

ملكنا /home/dave/work تمت إضافة الدليل إلى بداية المسار. تفصله العلامة النقطية التي قدمناها عن بقية المسار.


نكتب ما يلي للتحقق من إصدارنا rf هو أول واحد تم العثور عليه:

which rf

أي تردد راديوي موجود في نافذة المحطة الطرفية

الدليل في الحلوى يجري rfكما هو موضح أدناه:

rf

rf في نافذة المحطة الطرفية

يجد shell الإصدار 1.1 وينفذه من /home/dave/work.

لإضافة الدليل الخاص بنا إلى نهاية المسار، علينا فقط نقله إلى نهاية الأمر، كما يلي:

export PATH=$PATH:/home/dave/work


كيفية إضافة شيء ما إلى PATH بشكل دائم

مثل بيث بروك-مارسينياك قال “النجاح أمر جيد، لكن النجاح عابر”. في اللحظة التي تغلق فيها نافذة المحطة الطرفية، سيتم حذف أي تغييرات أجريتها على $PATH لقد ولت. ولجعلها دائمة، عليك أن تضع export الأمر في ملف التكوين.

عندما تضع export الأمر في الخاص بك .bashrc الملف، فهو يحدد المسار في كل مرة تفتح فيها نافذة المحطة الطرفية. على عكس SSH الجلسات، والتي يتعين عليك تسجيل الدخول إليها، تسمى جلسات “تفاعلية”.

في الماضي، كنت تضع export الأمر في الخاص بك .profile ملف لتعيين المسار لتسجيل الدخول إلى جلسات المحطة الطرفية.

ومع ذلك، وجدنا أنه إذا وضعنا export الأمر في أي منهما .bashrc أو .profile الملفات، فقد تم تعيين المسار بشكل صحيح لكل من جلسات المحطة الطرفية التفاعلية وجلسات تسجيل الدخول. قد تكون تجربتك مختلفة. للتعامل مع كافة الاحتمالات، سنوضح لك كيفية القيام بذلك في كلا الملفين.

استخدم الأمر التالي في جهازك /home دليل لتحرير .bashrc ملف:

gedit .bashrc


gedit .bashrc في نافذة المحطة الطرفية

ال gedit يفتح المحرر بـ .bashrc تم تحميل الملف.

محرر gedit مع الملف .bashrc المحمل فيه

انتقل إلى أسفل الملف، ثم أضف أمر التصدير التالي الذي استخدمناه سابقًا:

export PATH=/home/dave/work:$PATH

احفظ الملف. بعد ذلك، إما أن تغلق نافذة المحطة الطرفية ثم تعيد فتحها أو تستخدم dot أمر لقراءة .bashrc الملف على النحو التالي:

. .bashrcثم اكتب ما يلي echo الأمر للتحقق من المسار:

echo $PATH


. .bashrc في نافذة المحطة الطرفية

وهذا يضيف /home/dave/work الدليل إلى بداية المسار.

عملية إضافة الأمر إلى .profile الملف هو نفسه. اكتب الأمر التالي:

gedit .profile

gedit .profile في نافذة المحطة الطرفية

ال gedit يبدأ المحرر بـ .profile تم تحميل الملف.

محرر gedit مع ملف .profile المحمل فيه


أضف export الأمر إلى أسفل الملف، ثم احفظه. إن إغلاق نافذة طرفية جديدة وفتحها لا يكفي لإجبار .profile الملف المراد إعادة قراءته. لكي تسري الإعدادات الجديدة، يجب عليك تسجيل الخروج ثم تسجيل الدخول مرة أخرى أو استخدام dot الأمر كما هو موضح أدناه:

. .profile

تحديد المسار للجميع

لتعيين المسار لكل من يستخدم النظام، يمكنك تحرير /etc/profile ملف.

سوف تحتاج إلى استخدام sudoعلى النحو التالي:

sudo gedit /etc/profile

عندما gedit عند تشغيل المحرر، قم بإضافة أمر التصدير إلى أسفل الملف.

محرر gedit مع الملف /etc/profile المحمل فيه.

احفظ الملف وأغلقه. ستسري التغييرات على الآخرين في المرة التالية التي يقومون فيها بتسجيل الدخول.


ملاحظة حول الأمن

تأكد من عدم إضافة علامة القولون الرئيسية عن طريق الخطأ:“إلى المسار كما هو موضح أدناه.

صدى $PATH في نافذة المحطة الطرفية

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

إذا كان الأرشيف الأول يحتوي على ملف قابل للتنفيذ يسمى unzip كان هذا ملفًا تنفيذيًا ضارًا، وقد قمت بتشغيله عن طريق الخطأ بدلاً من الملف الحقيقي unzip يمكن أن يحدث هذا لأن shell سيبحث في الدليل الحالي أولاً.

لذا، كن دائمًا حذرًا عند كتابة export الأوامر. استخدم echo $PATH لمراجعتها والتأكد من أنها بالطريقة التي تريدها أن تكون.


أضف تعليق