امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

PATH Environment Variable در لینوکس چیست و چه کاربردی دارد ؟

PATH یک متغیر محیطی یا Environment Variable در سیستم عامل لینوکس و سایر سیستم عامل های UNIX Base است. به زبان ساده ، متغیر محیطی PATH به شل لینوکس ما دیکته میکند که کدام دایرکتوری شامل برنامه های اجرایی میباشند و سریعترین مسیر موجود برای اجرا کردن نرم افزار ها در کجا قرار دارد. برای مثال نرم افزارهای آماده به کاری که توسط کابران به طور معمول استفاده میشوند مانند نرم افزار ls یا cat و یا از این قبیل نرم افزارها.متغیر های محیطی در system profile ها نگهداری میشوند و زمانی ایجاد میشوند که به سیستم لینوکسی از راه دور Login میکنیم(یا اینکه ترمینال خود را در سیستم بصورت کنسول باز کنیم). متغیر محیطی PATH باعث افزایش راحتی و ایمنی این گونه سیستم عامل ها میشود و تا آنجا که متغیر محیطی PATH به یکی از مهم ترین Environment Variable ها در سیستم عامل لینوکس تبدیل شده است.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

متغیر های محیطی کلاسی از متغیر ها یا بعبارتی آیتم هایی میباشند که میتوان مقادیر آنها را تغییر داد که به شل چگونگی تعامل و رفتار با دستوراتی که کاربر با آنها دائما سر و کار دارد دیکته میکند. توجه کنید که PATH با path زمین تا آسمان فرق دارد PATH یک متغیر محیطی در سیستم عامل های UNIX based است اما path یا همان مسیر میتوان گفت که جزء ای از PATH است زیرا ما در حقیقت مسیر را در متغیر محیطی PATH برای اجرا شدنش تعریف میکنیم.path یا partially path یک مسیر نسبی است که در ساختار سلسله مراتبی سیستم عامل لینوکس موجود است مانند مسیری که در حال حاضر در ساختار سلسله مراتبی لینوکس در آن قرار دارید مانند دایرکتوری Desktop یا Downloads در پروفایل کاربری تان. absolute path یا مسیر مطلق که به آن full path یا مسیر کامل نیز میگویند مسیری است که ما برای بیان آن دایرکتوری هایی که از ابتدای ساختار سلسله مراتبی لینوکس که همان root میباشد تا دایرکتوری فعلی مان که در آن قرار داریم را ذکر میکنیم برای مثال با زدن دستور pwd مسیر کاملی که در آن قرار داریم نشان داده میشود :

:~# pwd
:~# /home/amirhossein/Desktop/test

در مسیر فوق فولدر test ما در داخل فولدر Desktop قرار دارد و فولدر Desktop در پروفایل کاربری ما که همان amirhossein است قرار دارد و پروفایل ما در داخل دایرکتوری home قرار گرفته و در آخر دایرکتوری home که مستقیما از دایرکتوری روت یا / جدا شده است قرار میگیرد.

همانطور که گفتیم PATH شامل مسیرهای مطلقی است که وقتی کاربر یک دستور را مانند ls اجرا میکند به جای اینکه مسیر مطلق آن نرم افزار یا دستور را که در اینجا برای نرم افزار ls مسیر مطلقش bin / ls میباشد برای اجرا وارد کند آنرا به شکل ساده تر مثل ls وارد میکند، پس اینجاست که متغیر محیطی PATH به کمک ما می آید پس اگر ما مسیر مطلق فایل های آن نرم افزار را در متغیر محیطی PATH تعریف کنیم براحتی میتوانیم دستور خود را بدون ذکر مسیر کامل اجرا کنیم. میتوان گفت که متغیر محیطی PATH به عنوان یک فاکتور امنیتی نیز میتواند مطرح شود زیرا کاربر بدون اینکه مسیر مطلق را برای اجرای نرم افزار وارد کند تنها با نام آن براحتی میتواند کارش را انجام دهد و جلوی اجرا شدن نرم افزار های مشابه گرفته میشود دومین مزیت استفاده از متغیر محیطی PATH نیز افزایش سرعت عمل ما هنگام کار با سیستم عامل است.

لیست تمامی متغیر های محیطی در سیستم عامل های UNIX Based را با اجرا کردن دستور env میتوان مشاهده نمود.برای اینکه در خروجی تنها متغیر محیطی PATH را مشاهده کنید دستور زیر را وارد کنید :

:~# env | grep PATH

روش دیگر مشاهده محتویات متغیر محیطی PATH با استفاده از دستور echo میباشد که به صورت زیر است :

:~# echo $PATH

همانطور که حتما مستحضر هستید علامت $ را به این خاطر گذاشتیم که PATH بصورت متن در خروجی نمایش داده نشود یا بعبارتی شل آنرا به عنوان متغیر در نظر بگیرد و مقدارش را به ما برگرداند.شما با استفاده از دستور unset میتوانید متغیر PATH را که به صورت تنظیم شده در سیستم قرار گرفته است را از حالت تنظیم خارج کنید :

:~# unset PATH

در هر حالت پیشنهاد میشود که این متغیر حیاتی را unset نکنید زیرا ممکن است تا زمان Log off نکردن از session خود با مشکل مواجه شوید. هر کاربر استفاده کننده از سیستم لینوکسی ممکن است متغیر محیطی PATH متفاوتی داشته باشد. وقتی سیستم عامل لینوکس نصب میشود یک متغیر محیطی PATH پیشفرض برای کاربر root ایجاد میشود و متغیر های محیطی PATH دیگر نیز برای سایر کاربران معمولی ایجاد و اعمال میشود.

متغیر محیطی PATH برای کاربران معمولی شامل دایرکتوری های زیادی نسبت به کاربر root است به خاطر اینکه دایرکتوری هایی مانند sbin و usr sbin / وجود دارد که شامل برنامه هایی است که توسط کاربران استفاده میشود. برای اطمینان حاصل کردن از این موضوع میتوانید مسیر های موجود در متغیر PATH اکانت کاربری لینوکس خودتان را با استفاده از دستورات فوق بشمارید.متغیر های PATH را میتوان براحتی تغییر داد.

آنها به دو حالت میتوانند تغییر داده شوند یکی به صورت موقت و دیگری بصورت دائمی. به این گونه که وقتی در حال حاضر در session خود به طور لاگین قرار دارید و حالت دیگر این است که بعد از Log off کردن از session خود نیز تغییرات به طور دائم باقی بمانند و overwrite نشوند. اضافه نمودن مسیر دایرکتوری به متغیر محیطی PATH کاری بسیار آسان است. با استفاده از الگوی زیر میتوانید یک مسیر دایرکتوری به متغیر محیطی PATH اضافه نمایید :

:~#  export PATH="directory:$PATH"

برای مثال ما دایرکتوری usrsbin را به متغیر PATH اضافه میکنیم :

export PATH="/usr/sbin:$PATH "

دقت کنید که با export کردن این موارد کار تمام نمیشود و تغییرات به صورت دائمی اعمال نمیشود و ما این همه صحبت نکردیم که در آخر کار با یک Log off کردن تمام کار هایمان بی معنی شود. شما برای اعمال نمودن دائمی این تغییرات بایستی دستورات فوق را در فایل bashrc. و یا در فایل bashprofile. موجود در پروفایل کاربری تان ذخیره کنید. نقطه ها در ابتدای این دو فایل نشانگر این است که مخفی هستند. برای انجام این کار در فایل bashprofile. بایستی این فایل را با یک ویرایشگر متن باز کنید و دستور زیر را عینا در قسمتی که با PATH شروع میشود وارد کنید :

:~# PATH=$PATH:$HOME/bin:/usr/test

در دستور فوق ما دایرکتوری usrtest را در فایل bash_profile. ذخیره کردیم. حال اگر از session خود Log off نیز بکنید باز هم تغییرات به طور دائم باقی میمانند. ITPROباشید

نویسنده: امیرحسین کریم پور

منبع : جزیره لینوکس و سیستم های متن باز وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر نام نویسنده و منبع دارای اشکال اخلاقی میباشد


امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

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

نظرات