رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
نحوه خواندن و تنظیم متغیرهای محیطی و شل در لینوکس

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

در این راهنما، نحوه تنظیم و خواندن متغیرهای محیطی و شل در سیستم‌عامل لینوکس به‌طور کامل توضیح داده شده است. با یادگیری نحوه استفاده از دستورات مانند `export` و `printenv`، می‌توانید متغیرها را به‌صورت صحیح تنظیم کرده و امنیت سیستم خود را افزایش دهید. این مقاله به شما کمک می‌کند تا متغیرهای محیطی را در فایل‌های پیکربندی لینوکس مانند `~/.bashrc` و `~/.profile` تعریف کنید و نحوه عملکرد آن‌ها را در جلسات مختلف شل بیاموزید.

مقدمه

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

یکی از راه‌هایی که شل برای پیگیری این تنظیمات استفاده می‌کند، محیط است؛ فضایی که متغیرهایی که خصوصیات سیستم را تعریف می‌کنند، در آن ذخیره می‌شوند. محیط هر بار که یک جلسه شل آغاز می‌شود، دوباره ساخته می‌شود و متغیرهای آن می‌توانند رفتار سیستم و فرآیندهای فرزند را تحت تأثیر قرار دهند.

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

نکات کلیدی

  • متغیرهای محیطی رفتار سیستم را تحت تأثیر قرار می‌دهند و توسط فرآیندهای فرزند به ارث برده می‌شوند، در حالی که متغیرهای شل فقط برای جلسه شل جاری معتبر هستند.

  • از دستورات printenv یا env برای مشاهده متغیرهای محیطی و از دستور set برای مشاهده تمام متغیرهای شل و محیطی استفاده کنید.

  • دستور export متغیرهای شل را به متغیرهای محیطی تبدیل می‌کند و آن‌ها را برای فرآیندهای فرزند قابل دسترسی می‌کند.

  • برای ماندگاری متغیرها در جلسات بعدی، آن‌ها را به فایل‌های پیکربندی مانند ~/.bashrc یا ~/.profile اضافه کنید.

  • درک دامنه و وراثت متغیرها برای مدیریت صحیح پیکربندی و امنیت اهمیت زیادی دارد.

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

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

برای مثال:

 
KEY=value1:value2:...

اگر مقدار دارای فاصله‌های زیادی باشد، از نقل‌قول‌ها استفاده می‌شود:

 
KEY="value with spaces"

این جفت‌ها به دو دسته تقسیم می‌شوند:

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

  • متغیرهای شل: این متغیرها فقط در جلسه شل فعلی وجود دارند و به فرآیندهای فرزند منتقل نمی‌شوند مگر اینکه به‌طور صریح صادر شوند.

متغیرها معمولاً با حروف بزرگ نوشته می‌شوند تا از سایر موارد در اسکریپت‌ها یا جلسات ترمینال قابل تشخیص باشند.

چاپ متغیرهای شل و محیطی

برای مشاهده متغیرهای محیطی، می‌توانید از دستور printenv یا env استفاده کنید. برای نمایش یک متغیر خاص، از دستور زیر استفاده کنید:

 
printenv VAR_NAME

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

 
set

برای تسهیل کار و مشاهده بهتر لیست‌های طولانی، می‌توانید آن را به برنامه‌‎های صفحه‌بندی مانند less ارسال کنید:

 
set | less

ایجاد متغیرهای شل

برای تعریف یک متغیر شل، به‌سادگی باید یک نام و مقدار تعیین کنید. به عنوان مثال:

 
TEST_VAR='Hello World!'

در اینجا، از نقل‌قول‌ها استفاده کرده‌ایم چون مقدار متغیر دارای فاصله است. همچنین از نقل‌قول‌های تک‌گانه استفاده شده چون علامت تعجب یک کاراکتر خاص در شل است که اگر فرار نشده باشد، معمولاً به تاریخچه شل گسترش پیدا می‌کند.

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

 
printenv | grep TEST_VAR

هیچ خروجی‌ای نباید نشان داده شود.

ایجاد متغیرهای محیطی

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

 
export TEST_VAR

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

 
bash echo $TEST_VAR

در این حالت، مقدار متغیر باید نمایش داده شود.

لغو و حذف متغیرها

اگر بخواهید متغیرها را از بین ببرید، می‌توانید از دستور unset استفاده کنید:

 
unset TEST_VAR

برای حذف یک متغیر محیطی، کافی است آن را از فایل‌های پیکربندی حذف کنید و دستور unset را در جلسه شل اجرا کنید.

تنظیم متغیرهای محیطی در زمان ورود به سیستم

برای اینکه متغیرهای محیطی در هر جلسه شل جدید به‌طور خودکار تنظیم شوند، باید آن‌ها را در فایل‌های پیکربندی مانند ~/.bashrc یا ~/.profile قرار دهید. برای این کار، فایل ~/.bashrc را ویرایش کرده و متغیرهای مورد نظر را در آن اضافه کنید.

 
nano ~/.bashrc

سپس با دستور زیر فایل را بارگذاری کنید:

 
source ~/.bashrc

ملاحظات امنیتی برای متغیرهای محیطی

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

  • هیچگاه داده‌های حساس را به‌صورت متنی ساده در فایل‌های پیکربندی که به سیستم‌های کنترل نسخه ارسال می‌شوند، ذخیره نکنید.

  • از مجوزهای مناسب برای فایل‌های پیکربندی استفاده کنید (معمولاً 600 برای فایل‌های خاص کاربر).

  • از متغیرهای محیطی حساس فقط در صورت نیاز استفاده کنید و آن‌ها را صادر کنید.

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

نتیجه‌گیری

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

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