یک لپ تاپ لینوکس با خطوط متن سبز در یک پنجره ترمینال.
Fatmawati Achmad Zaenuri / Shutterstock

$ PATH یکی از دست ساز های ساکت در پس زمینه رایانه لینوکس شما است. بی سر و صدا روی تجربه کاربر شما تأثیر می گذارد ، اما هیچ چیزی در مورد آن سایه ای ندارد. ما توضیح خواهیم داد که چه کاری انجام می دهد ، و چگونه می توانید آن را تنظیم کنید.

$ PATH در لینوکس ، و چگونه کار می کند؟

وقتی یک فرمان را در یک پنجره ترمینال تایپ می کنید و Enter را فشار می دهید ، شروع می کنید. فعالیت بسیار زیادی قبل از اجرای فرمان شما انجام می شود.

Bash پوسته پیش فرض در اکثر توزیع های لینوکس است. این خط متنی را که وارد کردید تعبیر می کند و اسامی دستوری را که با پارامترها ، لوله ها ، تغییر مسیرها و سایر موارد وجود دارد شناسایی می کند. سپس آن باینری های اجرایی را برای آن دسته از دستورات قرار می دهد و آنها را با پارامترهایی که شما تهیه کرده اید راه اندازی می کند. اگر دستوری که استفاده می کنید در داخل پوسته باشد (یک "داخلی ساخته شده از پوسته") به جستجوی بیشتر نیاز نیست.

کپسول های ساخت پوسته ساده ترین مورد استفاده هستند زیرا آنها یکپارچه در پوسته هستند. به نظر می رسد که آنها را در یک نوار ابزار قرار دهید. آنها همیشه در کنار شما هستند.

اگر به یکی از ابزارهای دیگر خود نیاز دارید ، برای یافتن آن مجبورید در کارگاه شرکت کنید. آیا روی میز کار شماست یا یک چوب لباسی دیواری؟ این چیزی است که متغیر $ PATH انجام می دهد. این لیست لیستی از مکانهای جستجوی پوسته و ترتیب جستجوی آنها را در اختیار شما قرار می دهد.

اگر می خواهید ببینید که آیا یک دستور ساخته شده است ، یک نام مستعار ، یک تابع ، یا یک باینری مستقل mv / work / تا زمانی که می توانید از دستور نوع استفاده کنید:

 نوع پاک 
 نوع cd 

را به ما می گوید که روشن یک پرونده باینری و اولین مورد موجود در مسیر در / usr / bin قرار دارد. شما ممکن است بیش از یک نسخه روشن را روی رایانه خود نصب کنید ، اما این همان نسخه ای است که پوسته سعی خواهد کرد از آن استفاده کند.

با کمال تعجب ، سی دی یک پوسته ساخته شده است. [19659016] لیست کردن PATH $

آسان است بدانید چه چیزی در مسیر شماست. برای استفاده از دستور echo کافی است زیر را تایپ کرده و مقدار چاپ شده در متغیر $ PATH را چاپ کنید:

 echo $ PATH 

 The

the out لیستی از کولون (: ) مکان های فایل سیستم محدود است. این پوسته از چپ به راست از طریق مسیر جستجو می کند ، هر مکان از سیستم فایل را برای عملکردی مطابق با عملکرد خود بررسی می کند.

ما می توانیم مسیر خود را از طریق لیست انتخاب کنیم تا مکان های سیستم فایل را که جستجو می شود ، مشاهده کنیم و سفارش دهید. که در آن جستجو خواهد شد:

  • / usr / local / sbin
  • / usr / local / bin
  • / usr / sbin
  • / usr / bin
  • / sbin
  • / bin [19659023] / usr / games
  • / usr / local / games
  • / snap / bin

چیزی که ممکن است فوراً آشکار نباشد این است که جستجو در دایرکتوری فعلی کار شروع نمی شود. در عوض ، از طریق فهرست های ذکر شده و فقط فهرستهای فهرست شده کار می کند.

اگر فهرست کار فعلی در مسیر شما نیست ، جستجو نمی شود. همچنین ، اگر دستوراتی را در دایرکتوری های موجود در مسیر قرار داده اید ، پوسته آنها را پیدا نمی کند.

برای نشان دادن این ، ما یک برنامه کوچک به نام rf ایجاد کردیم. هنگام اجرا ، rf نام دایرکتوری را که از آن در پنجره ترمینال راه اندازی شده چاپ می کند. در / usr / local / bin واقع شده است. ما همچنین نسخه جدیدتری را در فهرست / dave / work داریم.

ما زیر را تایپ می کنیم که دستور برای نشان دادن کدام نسخه از برنامه ما پوسته را پیدا خواهد کرد و استفاده می کند:

 که به 

 [

این نسخه گزارش می دهد نسخه موجود در فهرست موجود در مسیر است.

ما موارد زیر را برای آتش زدن آن تایپ می کنیم:

 rf [19659040] "rf" command in a terminal window." width="646" height="97" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/> 

نسخه 1.0 از rf اجرا می شود و تأیید می کند انتظارات ما صحیح بوده است. نسخه موجود و اجرایی در / usr / local / bin واقع شده است.

برای اجرای نسخه دیگری از rf در این رایانه ، ما باید از مسیر به قابل اجرا در خط فرمان ، به شرح زیر:

 ./ work / rf 

اکنون که ما به پوسته گفتیم کجا می توانید نسخه rf می خواهیم اجرا کنیم ، از نسخه 1.1 استفاده می کند. اگر این نسخه را ترجیح دهیم ، می توانیم آن را در فهرست / usr / local / bin کپی کرده و نسخه قدیمی را بازنویسی کنیم.

بیایید بگوییم که ما در حال تولید نسخه جدیدی از rf ما باید آن را به طور مکرر اجرا کنیم و آن را آزمایش کنیم ، اما نمی خواهیم یک ساخت و ساز توسعه نیافته را در محیط زنده کپی کنیم.

یا ، شاید ، ما نسخه جدیدی از را بارگیری کرده ایم. و می خواهیم قبل از انتشار آن ، برخی از آزمایش های تأیید را بر روی آن انجام دهیم.

اگر فهرست کار خود را به مسیر اضافه کنیم ، می خواهیم پوسته نسخه خود را پیدا کند. و این تغییر فقط روی ما تأثیر خواهد گذاشت - دیگران همچنان از نسخه rf در / usr / local / bin استفاده خواهند کرد.

با اضافه کردن یک فهرست راهنما به $ PATH

شما می توانید از دستور export استفاده کنید تا یک فهرست به $ PATH اضافه شود. سپس فهرست در لیست مکانهای سیستم فایل جستجوهای پوسته گنجانده می شود. هنگامی که پوسته عملکردی مطابق با عملکرد پیدا کرد ، جستجو را متوقف می کند ، بنابراین می خواهید مطمئن شوید که ابتدا فهرست شما را جستجو می کند ، قبل از / usr / local / bin .

این کار آسان است. به عنوان مثال ، زیر را تایپ می کنیم تا فهرست خود را به شروع مسیر اضافه کنیم بنابراین این اولین مکان جستجو شده است:

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

 [

این دستور $ PATH را برابر با دایرکتوری است که اضافه می کنیم ، / home / dave / work ، و سپس کل مسیر فعلی.

اولین PATH علامت دلار ندارد ( $ ). ما مقدار PATH را تعیین کردیم. نهایی $ PATH دارای نشان دلار است زیرا ما به مطالب ذخیره شده در متغیر PATH ارجاع می دهیم. همچنین ، توجه داشته باشید كه كولون (: ) بین دایرکتوری جدید و نام متغیر $ PATH .

بیایید ببینیم که مسیر اکنون به نظر می رسد:

 echo $ PATH [19659058] فهرست "echo $PATH" command in a terminal window." width="646" height="122" src="/pagespeed_static/1.JiBnMqyl6S.gif" onload="pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);" onerror="this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);"/> 

فهرست / home / dave / work ما به شروع مسیر اضافه می شود. روده بزرگ ارائه شده ما آن را از بقیه مسیر جدا می کند.

ما برای تأیید نسخه ما از rf عنوان زیر را تایپ می کنیم:

 که به 

 [19659006] اثبات موجود در پودینگ در حال اجرا است rf ، به شرح زیر:

 rf 

پوسته نسخه 1.1 را پیدا می کند و آن را از / home / dave / work .

برای اضافه کردن فهرست ما به انتهای مسیر ، ما فقط آن را به انتهای فرمان منتقل می کنیم ، مانند این:

 صادرات PATH = $ PATH: / home / dave / work 

ایجاد تغییرات دائمی

همانطور که بث بروک-مارسیینیاک گفت ، "موفقیت خوب است ، اما موفقیت بی نتیجه است." لحظه ای که پنجره ترمینال را می بندید ، تغییراتی که در $ PATH ایجاد کرده اید از بین رفته است. برای ثابت ماندن آنها ، باید دستور صادرات خود را در یک پرونده پیکربندی قرار دهید.

هنگامی که دستور export را در پرونده .bashrc قرار می دهید ، هر بار که یک پنجره ترمینال باز می کنید ، مسیر را تعیین می کند. برخلاف SSH جلسات ، که باید برای آن وارد شوید ، این جلسات "تعاملی" نامیده می شوند.

در گذشته ، شما صادرات را در خود قرار می دهید. .profile پرونده برای تنظیم مسیر ورود به جلسات ترمینال.

با این حال ، دریافتیم که اگر دستور eksport را یا در قرار دهیم .bashrc یا ] پرونده های را به طور صحیح مسیری را برای جلسات تعاملی و ورود به سیستم ترمینال تنظیم می کند. تجربه شما ممکن است متفاوت باشد برای رسیدگی به کلیه وقایع ، ما به شما نشان خواهیم داد که چگونه این کار را در هر دو پرونده انجام دهید.

از دستور زیر در فهرست / home خود استفاده کنید تا پرونده .bashrc را ویرایش کنید: 19659011] gedit .bashrc

ویرایشگر gedit با پرونده .bashrc بارگذاری شد.

برو به پایین پرونده ، و سپس دستور صادراتی زیر را که قبلاً استفاده می کردیم اضافه کنید:

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

پرونده را ذخیره کنید. در مرحله بعد ، پنجره ترمینال را ببندید و مجدداً باز کنید یا از دستور dot استفاده کنید تا پرونده .bashrc را بخوانید ، به شرح زیر:

. .bashrc

سپس ، دستور زیر را echo تایپ کنید تا مسیر را بررسی کنید:

 echo $ PATH 

 [

این اضافه می کند ] / فهرست / home / dave / work برای شروع مسیر.

روند اضافه کردن دستور به پرونده .profile همان است. دستور زیر را تایپ کنید:

 gedit .profile 

gedit ویرایشگر با پرونده .profile بارگیری.  ویرایشگر gedit با

دستور eksport را به انتهای پرونده اضافه کنید و سپس آن را ذخیره کنید. بستن و باز کردن یک پنجره ترمینال جدید کافی نیست که مجبور شود پرونده .profile خوانده شود. برای اعمال تنظیمات جدید ، باید از سیستم dot مطابق شکل زیر استفاده کنید و از آن استفاده کنید و از آن استفاده کنید:

 .profile 

ارتباط: نحوه ویرایش فایل های متنی به صورت گرافیکی در Linux با gedit

تنظیم مسیر برای همه

برای تنظیم مسیر برای همه کسانی که از سیستم استفاده می کنند می توانید پرونده / etc / profile را ویرایش کنید.

شما باید از sudo استفاده کنید ، به شرح زیر:

 sudo gedit / etc / profile 

ویرایشگر gedit را راه اندازی کرد ، دستور صادرات را در انتهای پرونده اضافه کنید.

 ویرایشگر gedit با

پرونده را ذخیره و بسته کنید. این تغییرات برای دیگران اعمال خواهد شد دفعه بعد که وارد سیستم شوند.

یک یادداشت در مورد امنیت

اطمینان حاصل کنید که به طور تصادفی یک کولون پیشرو را به طور تصادفی اضافه نمی کنید. : در زیر.

 The

اگر این کار را انجام دهید ، ابتدا فهرست اصلی را جستجو می کنید ، که یک خطر امنیتی را معرفی می کند. بگویید که شما یک پرونده بایگانی را بارگیری کرده اید و آنرا در فهرست قرار داده اید. شما به پرونده ها نگاه می کنید و یک فایل زیپ شده دیگر را مشاهده می کنید. شما برای استخراج آن بایگانی یک بار دیگر از unzip استفاده می کنید.

اگر اولین بایگانی حاوی پرونده ای اجرایی با نام unzip بود که یک عامل اجرایی مخرب بود ، شما به طور تصادفی آن را به جای واقعی شلیک می کنید. unzip قابل اجرا. این امر به این دلیل اتفاق می افتد كه پوسته ابتدا در فهرست موجود قرار خواهد گرفت.

بنابراین ، وقتی كه دستورات صادرات خود را تایپ می كنید ، همیشه مراقب باشید. برای مرور آنها از echo $ PATH استفاده کنید و مطمئن شوید که آنها راهی هستند که شما می خواهید آنها باشید.