آموزش مقدمات لینوکس – بخش دهم

آموزش مقدمات لینوکس

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

مدیریت متغیرهای محیطی کاربر

یکی از مواردی که در لینوکس حائز اهمیت می باشد، متغیرهای محیطی می باشد که درک مناسب از آن ها در مدیریت عملکرد بهینه و حتی مخفی سازی موثر خواهد بود. از منظر فنی دو نوع متغیر وجود دارد که شامل متغیرهای شل و محیطی می باشد.

متغیرهای محیطی، متغیرهای گسترده ای هستند که درون سیستم قرار داده شده اند ولی متغیرهای شل به طور معمول تنها در یک شل که در آن قرار دارید معتبر می باشد.

متغیرها در واقع رشته های ساده ای هستند که به صورت کلید و مقدار (KEY=value) تعریف شده و در مواردی که چندین مقدار وجود داشته باشد به صورت KEY=value1:value2 تعریف خواهد شد.

در محیط کالی لینوکس محیط یا Environment شما bash shell می باشد. هر کاربر از جمله کاربر root یک مجموعه پیش فرض از متغیرهای محیطی را دارد و شما می توانید مقادیر این متغیرها را تغییر دهید تا سیستم کارآمدتر شده و محیط کار خود را متناسب با نیازهای شخصی خود تنظیم نمایید.

شما می توانید تمامی متغیرهای محیطی را با وارد نمودن دستور env در ترمینال لینوکس مشاهده نمایید:

متغیرهای محیطی در لینوکس

نمایش تمامی متغیرهای محیطی

برای مشاهده کلیه متغیرهای محیطی، شامل متغیرهای شل، متغیرهای محلی و توابع شل، می توان از دستور set استفاده نمود. برای مشاهده خط به خط متغیرهای شما می توانید از دستور زیر استفاده نمایید:

set | more

فیلتر متغیرهای خاص

به منظور فیلتر نمودن یک متغیر خاص در خروجی ابزار set می توان از دستور grep استفاده نمود. به عنوان مثال ما به دنبال متغیر HISTSIZE هستیم. این متغیر شامل بیشترین تعداد دستوراتی است که دستور history قادر به ذخیره آن می باشد. این متغیر تنها تعداد دستورات را در خود ذخیره می نماید. برای فیلتر نمودن این متغیر از دستور زیر استفاده می کنیم:

set | grep HISTSIZE

تغییر مقدار متغیر برای یک Session

در این بخش به تغییر مقدار متغیر در یک Session می پردازیم. در این بخش نیز از متغییر HISTSIZE استفاده می کنیم. در برخی موارد ممکن است شما قصد ذخیره شدن دستورات وارد شده را نداشته باشید. (شاید شما می خواهید که هیچ گونه شواهدی بر روی سیستم باقی نگذارید)
در این مورد شما می توانید مقدار HISTSIZE را به صفر تغییر دهید تا سیستم دستورات وارد شده را ذخیره ننماید. بدین منظور شما کافی است تا در محیط ترمینال عبارت HISTSIZE=0 را وارد نمایید.

ایجاد متغیر با مقدار ثابت

هنگامی که شما مقدار یک متغیر محیطی را تغییر می دهید، این تغییر تنها در یک محیط خاص انجام می شود(Bash Shell Session). بدین صورت هنگامی که ترمینال بسته شود، تمامی تغییرات صورت گرفته از بین رفته و مقادیر تنظیم شده به مقادیر پیش فرض تغییر خواهد یافت.
اگر شما قصد پایدار نمودن این تغییرات را داشته باشید باید از دستور export استفاده نمایید. این دستور مقدار جدیدی از محیطی که شما در آن هستید (bash shell) به بقیه سیستم صادر نموده و تا زمان تغییر شما مجدداً آن را تغییر ندهید در تمامی محیط ها در دسترس خواهد بود.

آشنایی با مدیریت پروسس ها در لینوکس

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

echo $HISTSIZE> ~/valeueofHISTSIZE.txt

همچنین به منظور ذخیره سازی کلیه اطلاعات مربوط به متغیرها، شما می توانید از دستور زیر استفاده نموده و آن ها را در یک فایل متنی ذخیره نمایید:

set> ~/valueofALL08012020.txt

سپس شما می توانید از دستور export استفاده نموده و پس از مقداردهی HISTSIZE=0، آن را اصطلاحاً Permanent نمایید:

export HISTSIZE

تغییر PATH جاری

یکی از مهمترین متغیرهای محیطی، متغیر PATH می باشد که دستورات مربوط به Shell استفاده شده توسط شما مانند cd، ls، echo و موارد دیگر را کنترل می کند. اغلب دستورات در زیرمجموعه bin یا sbin (/usr/local/sbin یا /usr/local/bin) قرار گرفته اند. اگر Bash Shell دستور وارد شده توسط شما را در یکی از دایرکتوری های موجود در متغیر PATH پیدا نکند، پیام Command not found به شما نمایش داده می شود. حتی اگر دستور در دایرکتوری وجود داشته باشد ولی در PATH وجود نداشته باشد، باز هم پیام Command not found نمایش داده خواهد شد.
برای مشاهده دایرکتوری های موجود در متغیر PATH از دستور زیر استفاده می کنیم:

Environment variable

این ها دایرکتوری هایی هستند که ترمینال شما برای دستیابی به هر دستوری، آن را جست و جو می نماید. به عنوان مثال، هنگامی که شما دستور ls را وارد می کنید، سیستم در دایرکتوری های بالا به دنبال دستور ls می گردد و در صورت پیدا کردن آن، دستور مورد نظر اجرا می شود.
توجه داشته باشید که دایرکتوری ها با عبارت : از یکدیگر جدا می شوند.

اضافه کردن مقدار به متغیر PATH

در صورتی که شما یک ابزار را از اینترنت دانلود نموده و آن را نصب نمایید، دستورات مربوط به این ابزار، تنها زمانی که شما در دایرکتوری آن قرار دارید، قابل اجرا هستند. بدین ترتیب در صورتی که شما در دایرکتوری دیگری باشید، امکان اجرای این دستور را نخواهید داشت.
فرض کنید که ابزار در دایرکتوری /root/newhackingtool قرار دارد. با توجه به اینکه این مسیر در متغیر PATH تعریف نشده است، در صورتی که خارج از دایرکتوری، دستورات ابزار مورد نظر را وارد نمایید با پیام Command not found مواجه خواهید شد.
به منظور استفاده از دستورات این ابزار در کل سیستم، باید مسیر آن را به متغیر PATH اضافه نمایید. برای این منظور باید از دستور زیر استفاده کنید:

PATH=$PATH:/root/newhackingtool

پس از اجرای دستور بالا در صورتی که محتویات متغیر PATH را بررسی نمایید، دایرکتوری مورد نظر به دایرکتوری های موجود در این متغیر اضافه گردیده است و از این پس شما می توانید دستورات مربوط به این ابزار را در بخش های مختلف ترمینال وارد نمایید.

Environment variable

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

یک اشتباه در اضافه کردن متغیر PATH

یکی از اشتباهاتی که برای کاربران در ابتدای کار با متغیرPATH ممکن است رخ دهد، استفاده از دستور زیر برای اضافه نمودن دایرکتوری /root/newhackingtool می باشد:

PATH=/root/newhackingtool

در صورت استفاده از دستور بالا، مقادیر تنظیم شده پیشین متغیر PATH حذف شده و تنها مقدار دایرکتوری بالا درون این متغیر قرار می گیرند. بدین صورت تنها دستوارت موجود در این دایرکتوری اجرا شده و دستورات دیگر، اجرا نخواهند شد. به عنوان مثال زمانی که شما دستور ls را در محیط ترمینال خود وارد می کنید با پیام Command not found مواجه خواهید شد.

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید