Customize and use the shell environment
هدف درس¶
در این درس روشهای سفارشیسازی محیط شل (خصوصاً Bash) برای رفع نیازهای کاربران، و نحوهٔ مدیریت پروفایلهای سطح سیستم و کاربر را میآموزید.
دانش مورد نیاز¶
- تنظیم متغیرهای محیطی (مثلاً
PATH) در زمان ورود یا هنگام ساقهزدن یک شل جدید - نوشتن تابعهای Bash برای توالی دستورات پرکاربرد
- نگهداری فایلهای اسکل (skeleton) برای حسابهای کاربری جدید
- تعیین مسیر جستجوی فرمان با ترتیب صحیح دایرکتوریها
کلیدواژهها¶
/etc/profile, /etc/bash.bashrc, ~/.bash_profile, ~/.profile, ~/.bashrc, env, export, alias, function, BASH_ENV, PATH, source
متغیرهای محیطی¶
متغیرهای محیطی اطلاعات و پیکربندیهایی هستند که به شل و برنامهها میگویند چگونه رفتار کنند. برای نمایش همهٔ متغیرهای محیطی از env یا printenv استفاده کنید.
تنظیم ساده:
منتشر کردن (export) متغیر تا در زیرشلها نیز قابلدسترسی باشد:
برای حذف متغیر از محیط از unset استفاده کنید:
نکته عملی: هنگام تعریف
PATHاز اضافه کردن دایرکتوریهای ناایمن مانند.در ابتدا خودداری کنید؛ ممکن است باعث اجرای دستورات مخرب شود.
دستور set و گزینههای مفید¶
دستور set برای تغییر گزینههای شل استفاده میشود؛ نمونهها:
set -e: خروج از شل در صورت بازگشت غیرصفر اولین دستور در یک pipelineset -n: خواندن اسکریپت بدون اجرا (syntax check)
بارگذاری / انتشار تنظیمات (source)¶
برای اعمال تغییرات یک فایل پیکربندی در شل جاری از source یا کوتاه . استفاده کنید:
اگر فایل را بدون source اجرا کنید، در یک زیرشل اجرا میشود و تغییری در شل جاری ایجاد نخواهد شد.
alias و توابع (functions)¶
برای میانبر دستورات از alias استفاده کنید:
توابع برای توالیهای پیچیدهتر مناسباند:
توابع را در ~/.bashrc یا فایل پروفایل مناسب قرار دهید.
انواع شلها و فایلهای مربوطه¶
بسته به نوع راهاندازی شل (login vs interactive vs non-interactive) فایلهای مختلف بارگذاری میشوند:
- Login shell:
/etc/profile, then~/.bash_profileor~/.bash_loginor~/.profile, and often~/.bashrcat the end. - Interactive non-login shell (e.g., new terminal):
/etc/bash.bashrc(یا/etc/bashrc) and~/.bashrc. - Non-interactive shell (scripts):
BASH_ENVمتغیر محیطی را بررسی میکند و اگر به فایلی اشاره کند آن را بارگذاری میکند.
همچنین /etc/skel مجموعهٔ فایلهایی است که هنگام ساخت حساب جدید به خانهٔ کاربر کپی میشود.
نکات عملی¶
- قرار دادن منطق سنگین یا کدهای کند در
~/.bashrcباعث کند شدن باز شدن ترمینال میشود — به جای آن توابع تنبل بارگذاری (lazy-loading) یا فایلهای جداگانه استفاده کنید. - هنگام ویرایش فایلهای سیستمی (
/etc/profile,/etc/profile.d/*) از ایجاد متغیرهای مخرب یا تغییرات ناامن بپرهیزید. همیشه قبل از reboot یا تغییرات مهم آنها را در یک جلسهٔ تست بررسی کنید.
چکلیست جابجایی (deployment)¶
- تغییرات را در یک حساب غیرحساس تست کنید (یا یک ترمینال جدید باز کنید).
- از اضافهشدن مسیرهای ناامن به
PATHجلوگیری کنید. - در صورت نیاز، فایلها را در
/etc/profile.d/گذاشته و از حقوق دسترسی صحیح اطمینان حاصل کنید.
تمرینها¶
~/.bashrcخود را بررسی کنید و یکaliasو یکfunctionمناسب اضافه کنید؛ سپس باsource ~/.bashrcآن را بارگذاری کنید.- یک اسکریپت نمونه بنویسید که با
BASH_ENVاجرا شود و متغیری را در آن تنظیم کند؛ تفاوت رفتار را بین اجرای مستقیم و execution در شل بخوانید.
نکات کلیدی برای آزمون
- بدانید چگونه
PATHرا بهدرستی تنظیم و منتشر (export) کنید. - تفاوت فایلهای پیکربندی
loginوnon-loginرا توضیح دهید (مثلاً~/.bash_profileدر مقابل~/.bashrc). - بدانید
sourceچه تفاوتی با اجرای مستقیم یک فایل دارد.