
$ PATH یکی از دست ساز های ساکت در پس زمینه رایانه لینوکس شما است. بی سر و صدا روی تجربه کاربر شما تأثیر می گذارد ، اما هیچ چیزی در مورد آن سایه ای ندارد. ما توضیح خواهیم داد که چه کاری انجام می دهد ، و چگونه می توانید آن را تنظیم کنید.
$ PATH در لینوکس ، و چگونه کار می کند؟
وقتی یک فرمان را در یک پنجره ترمینال تایپ می کنید و Enter را فشار می دهید ، شروع می کنید. فعالیت بسیار زیادی قبل از اجرای فرمان شما انجام می شود.
Bash پوسته پیش فرض در اکثر توزیع های لینوکس است. این خط متنی را که وارد کردید تعبیر می کند و اسامی دستوری را که با پارامترها ، لوله ها ، تغییر مسیرها و سایر موارد وجود دارد شناسایی می کند. سپس آن باینری های اجرایی را برای آن دسته از دستورات قرار می دهد و آنها را با پارامترهایی که شما تهیه کرده اید راه اندازی می کند. اگر دستوری که استفاده می کنید در داخل پوسته باشد (یک "داخلی ساخته شده از پوسته") به جستجوی بیشتر نیاز نیست.
کپسول های ساخت پوسته ساده ترین مورد استفاده هستند زیرا آنها یکپارچه در پوسته هستند. به نظر می رسد که آنها را در یک نوار ابزار قرار دهید. آنها همیشه در کنار شما هستند.
اگر به یکی از ابزارهای دیگر خود نیاز دارید ، برای یافتن آن مجبورید در کارگاه شرکت کنید. آیا روی میز کار شماست یا یک چوب لباسی دیواری؟ این چیزی است که متغیر $ PATH انجام می دهد. این لیست لیستی از مکانهای جستجوی پوسته و ترتیب جستجوی آنها را در اختیار شما قرار می دهد.
اگر می خواهید ببینید که آیا یک دستور ساخته شده است ، یک نام مستعار ، یک تابع ، یا یک باینری مستقل mv / work / تا زمانی که می توانید از دستور نوع استفاده کنید:
نوع پاک
نوع cd
را به ما می گوید که روشن یک پرونده باینری و اولین مورد موجود در مسیر در / usr / bin قرار دارد. شما ممکن است بیش از یک نسخه روشن را روی رایانه خود نصب کنید ، اما این همان نسخه ای است که پوسته سعی خواهد کرد از آن استفاده کند.
با کمال تعجب ، سی دی یک پوسته ساخته شده است. [19659016] لیست کردن PATH $
آسان است بدانید چه چیزی در مسیر شماست. برای استفاده از دستور echo کافی است زیر را تایپ کرده و مقدار چاپ شده در متغیر $ PATH را چاپ کنید:
echo $ PATH
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بارگیری.![]()
دستور
eksportرا به انتهای پرونده اضافه کنید و سپس آن را ذخیره کنید. بستن و باز کردن یک پنجره ترمینال جدید کافی نیست که مجبور شود پرونده.profileخوانده شود. برای اعمال تنظیمات جدید ، باید از سیستمdotمطابق شکل زیر استفاده کنید و از آن استفاده کنید و از آن استفاده کنید:.profileارتباط: نحوه ویرایش فایل های متنی به صورت گرافیکی در Linux با gedit
تنظیم مسیر برای همه
برای تنظیم مسیر برای همه کسانی که از سیستم استفاده می کنند می توانید پرونده
/ etc / profileرا ویرایش کنید.شما باید از
sudoاستفاده کنید ، به شرح زیر:sudo gedit / etc / profileویرایشگر
geditرا راه اندازی کرد ، دستور صادرات را در انتهای پرونده اضافه کنید.
![]()
پرونده را ذخیره و بسته کنید. این تغییرات برای دیگران اعمال خواهد شد دفعه بعد که وارد سیستم شوند.
یک یادداشت در مورد امنیت
اطمینان حاصل کنید که به طور تصادفی یک کولون پیشرو را به طور تصادفی اضافه نمی کنید.
:در زیر.
![]()
اگر این کار را انجام دهید ، ابتدا فهرست اصلی را جستجو می کنید ، که یک خطر امنیتی را معرفی می کند. بگویید که شما یک پرونده بایگانی را بارگیری کرده اید و آنرا در فهرست قرار داده اید. شما به پرونده ها نگاه می کنید و یک فایل زیپ شده دیگر را مشاهده می کنید. شما برای استخراج آن بایگانی یک بار دیگر از unzip استفاده می کنید.
اگر اولین بایگانی حاوی پرونده ای اجرایی با نام
unzipبود که یک عامل اجرایی مخرب بود ، شما به طور تصادفی آن را به جای واقعیشلیک می کنید. unzipقابل اجرا. این امر به این دلیل اتفاق می افتد كه پوسته ابتدا در فهرست موجود قرار خواهد گرفت.بنابراین ، وقتی كه دستورات صادرات
خود راتایپ می كنید ، همیشه مراقب باشید. برای مرور آنها ازecho$ PATH استفاده کنید و مطمئن شوید که آنها راهی هستند که شما می خواهید آنها باشید.