قبل از اینکه شما به نوشتن اسکریپتهای جدید بپردازید، من میخواهم نشان بدهم که شما از قبل برخی اسکریپتهای خودتان را دارید. این اسکریپتها هنگامی که حساب کاربری شما ایجاد شده در دایرکتوری خانگی شما قرار داده شدهاند، و برای پیکربندی نشستهای شما در کامپیوتر به کار میروند. شما میتوانید این اسکریپتها را برای تغییر امور ویرایش نمایید.
در این درس، ما به دو تا از این اسکریپتها نگاه خواهیم نمود و چند مفهوم جدیدِ مهم را در باره پوسته یاد میگیریم.
در جریان یک نشستِ شما، سیستم تعدادی از دادهها در باره نشست را در حافظهاش نگهداری میکند. این اطلاعات
دو نوع از فرمانها اغلب در محیط پیوست میشوند. آنها
وقتی شما به سیستم متصل میشوید، برنامه bash شروع میشود، و یک سری از اسکریپتهای پیکربندی را که startup files(فایلهای راهاندازی) نامیده میشوند، میخواند. این فایلها محیط پیش فرض مشترک میان تمام کاربران را تعیین میکنند. این مورد با فایلهای راهاندازی دیگری در دایرکتوری خانگی شما که محیط شخصی شما را تعیین میکنند تعقیب میگردد. ترتیب دقیق آن به نوع نشست پوستهای که شروع میشود بستگی دارد. دو نوع وجود دارد: یک
پوستههای لاگین یک یا چند فایل راهاندازی را به طوری که در ادامه نشان داده شده است میخوانند:
فایل | محتویات |
---|---|
/etc/profile | یک اسکریپت پیکربندی سراسری که بر تمام کاربران اِعمال میگردد. |
~/.bash_profile | یک فایل راهاندازی شخصی کاربر. میتواند برای گسترش یا باطل کردن تنظیمات اسکریپت پیکربندی سراسری استفاده شود. |
~/.bash_login | اگر ~/.bash_profile پیدا نشود، bash تلاش میکند این اسکریپت را بخواند. |
~/.profile | در صورتیکه نه فایل ~/.bash_profile پیدا شود و نه فایل ~/.bash_login آنوقت bash سعی در خواندن این فایل میکند. این پیش فرضِ توزیعهای مبتنی بر دبیان از قبیل اوبونتو است. |
نشستهای پوسته بدون لاگین فایلهای راهاندازی زیر را میخوانند:
فایل | محتویات |
---|---|
/etc/bash.bashrc | یک اسکریپت پیکربندی سراسری که تمام کاربران را شامل میشود. |
~/.bashrc | یک فایل راهاندازی شخصی کاربر. میتواند برای برتری یافتن یا توسعه تنظیمات اسکریپت پیکربندی سراسری به کار برود. |
علاوه بر خواندن فایلهای راهاندازی فوق، پوستههای بدون لاگین از پردازش پدر خود که معمولاً یک پوسته لاگین است محیط را به ارث میبرند.
نگاهی به سیستم خود بیاندازید و ببینید کدام یک از این فایلهای راهاندازی را دارید. به خاطر بیاورید- چون نام اکثر فایلهای فهرست شده در بالا با یک نقطه شروع میشوند(به معنای اینکه آنها مخفی هستند)، لازم خواهد بود شما موقع استفاده از ls گزینه -a را به کار ببرید.
فایل ~/.bashrc از نقطه نظر کاربر عادی احتمالاً مهمترین فایل راهاندازی است، چون تقریباً همیشه خوانده میشود. پوستههای بدون لاگین به طور پیش فرض آن را میخوانند و فایلهای راهاندازی اکثر پوستههای لاگین طوری نوشته میشوند که فایل ~/.bashrc را هم بخوانند.
اگر به داخل یک فایل .bash_profile نمونه نگاه کنیم (این نمونه از یک سیستم CentOS 4 اخذ گردیده است)، موردی مشابه این به نظر میرسد:
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH
سطرهایی که با یک “
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
این یک
در صورتیکه فایل "
میتوانیم مشاهده کنیم که چگونگی دریافت کردن محتویات فایل .bashrc توسط پوسته لاگین، در این خُرده کُد است. مورد بعدی که فایل راهانداز ما انجام میدهد، تنظیم نمودن متغیر
آخر از همه، داریم: export PATH
فرمان export به پوسته میگوید محتویات متغیر
یک مستعار روش آسانی برای تولید فرمان جدیدی است که به عنوان یک کوتهنوشت برای فرمان بلندتر عمل میکند. دارای ترکیب دستوری به شکل زیر است:
alias name=value
که در آن name نام فرمان جدید است و value متنی است برای آنکه هرگاه name در خط فرمان وارد گردد، اجرا بشود.
بیایید یک مستعار به نام "l" ایجاد کنیم و آن را یک مخفف برای فرمان "ls-l" نماییم. اطمینان یابید که در دایرکتوری خانگی خود هستید. ویرایشگر متن مورد علاقه خود را به کار برده، و فایل .bashrc را باز کنید و این سطر را به انتهای فایل اضافه کنید:
alias l='ls -l'
با افزودن فرمان alias به فایل، ما یک فرمان جدید به نام "l" ایجاد نمودهایم که "ls -l" را انجام خواهد داد. برای امتحان فرمان جدیدتان، نشست ترمینال خود را بسته و نشست جدیدی آغاز کنید. با این کار فایل .bashrc دوباره بارگیری میشود. با استفاده از این شگرد میتوانید هر تعداد فرمان سفارشی برای خودتان ایجاد کنید. این هم یک مورد دیگر برای آزمایش کردن توسط شما:
alias today='date +"%A, %B %-d, %Y"'
این مستعار یک فرمان جدید به نام "today" ایجاد میکند که تاریخ امروز را با قالببندی دلپذیر نمایش میدهد.
در ضمن، فرمان alias یک فرمان داخلی(builtin) دیگر پوسته است. شما میتوانید مستعارهای خود را به طور مستقیم در اعلان فرمان ایجاد کنید، اما آنها فقط در خلال نشست فعلی پوسته اثر گذار خواهند بود. برای مثال:
[me@linuxbox me]$ alias l='ls -l'
مستعارها برای فرمانهای ساده مناسب هستند، اما در صورتیکه بخواهید مورد پیچیدهتری ایجاد نمایید، شما باید توابع پوسته را آزمایش کنید. توابع پوسته را میتوان به عنوان «اسکریپت داخل اسکریپت» یا اسکریپتهای فرعی کوچک در نظر گرفت. اجازه بدهید یک مورد را امتحان کنیم. دوباره فایل .bashrc را با ویرایشگر متن خود باز کنید و مستعار "today" را با کد زیر تعویض کنید:
today() { echo -n "Today's date is: " date +"%A, %B %-d, %Y" }
باور کنید یا نکنید، () نیز یک builtin پوسته است، و همچون alias، شما میتوانید توابع پوسته را به طور مستقیم در اعلان فرمان وارد کنید.
[me@linuxbox me]$ today() { > echo -n "Today's date is: " > date +"%A, %B %-d, %Y" > } [me@linuxbox me]$
اگرچه، باز هم مانند alias، توابع پوستهای که به طور مستقیم در خط فرمان تعریف شدهاند تنها در زمان پوسته جاری دوام دارند.