
$ 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 استفاده کنید و مطمئن شوید که آنها راهی هستند که شما می خواهید آنها باشید.