فایل های راه انداز در Bash

هر کدام از پوسته های لینوکسی دارای یک سری از فایل ها هستند که به آنها فایل های راه انداز یا Startup File گفته می شود، زیرا پس از بار گذاری و بالا آمدن لینوکس و در هنگام راه اندازی لینوکس و ورود (Login) به سیستم این فایل ها خوانده می شوند. فایل های راه انداز به ازای هر کاربر و در زیر دایرکتوری خانگی آن قرار دارند.

در توزیع های لینوکسی سه فایل در دایرکتوری خانگی کاربر هستند که هر سه پنهان شده اند.  این فایل ها، bashrc و bash_profile و bash_history نام دارند. دستور زیر فهرست همه فایل های پنهانی را در زیر دایرکتوری خانگی نشان می دهد که نام آنها با رشته bash. آغاز می شود. شکل زیر خروجی دستور را نشان می دهد. البته توزیع های لینوکسی فایل دیگری به نام etc/profile/ نیز هست که جز فایل های راه انداز پوسته Bash هستند. البته در خروجی زیر، فایلی به نام bash_history. هست که آن جز فایل های را انداز نیست. پس چهار  فایل زیر (همراه etc/profile/) شماری از فایل های راه انداز پوسته bash هستند.

ls -ld $HOME/.bash*

  • $HOME/.bashrc
  • $HOME/.bash_profile
  • $HOME/.bash_logout
  • etc/profiles/
متغیر HOME$ یکی از متغیرهای محیطی است که پیش فرض پس از نصب لینوکس، ساخته می شود و مسیر دایرکتوری خانگی کاربر کنونی که به سیستم وارد شده است را نگه می دارد.

فایل bashrc. در زیر دایرکتوری خانگی

این فایل معمولا برای شناساندن (تعریف) متغیرهای محیطی به کار گرفته می شوند که این متغیرها بدست برخی از برنامه ها مانند جاوا، برنامه های نوشته شده به زبان جاوا و همچنین اوراکل به کار گرفته می شوند. برای نمونه برخی از برنامه های نوشته شده به زبان جاوا، نیاز دارند تا مسیر نصب جاوا را از متغیری به نام JAVA_HOME$ بخوانند. همچنین در پیوند زیر، نشان دادیم که چگونه باید محیط نصب اوراکل، را آماده کنید که در برگیرنده ساخت و شناساندن برخی از متغیرها است.

همچنین این فایل رفتار پوسته Interactive را مشخص می کند برای همین برخی پیشنهاد می کنند که متغیرهای محیطی دلخواه و شناسانده شده به دست خودمان را در فایل دیگر، یعنی HOME/.bash_profile$ بنویسیم. فایل bashrc. در برگیرنده کدهای شل اسکریپتی است که خواندن و فهم آنها، نخست به شما کمک می کند که بیشتر با اسکریپت نویسی پوسته آشنا شوید و همچنین کمک می کند درک بهتری از پوسته bash داشته باشید.

فایل bash_profile. در زیر دایرکتوری خانگی

شاید این فایل در توزیع لینوکسی شما نباشد و تنها فایل HOME/.bashrc باشد. برای نمونه در سیستم عامل مکینتاش فایل HOME/.bashrc$ نیست و تنها فایل HOME/.bash_profile$ هست ولی در توزیع ابونتو 18.04LTS تنها فایل HOME/.bashrc$ هست. در این فایل نیز می توان متغیرها و نام های مستعار یا توابع و دیگر پیکربندی های bash را بنویسیم.

فایل bash_logout. در زیر دایرکتوری خانگی

همانگونه که از نامش، این فایل در زمان بیرون رفتن (Logout) از سیستم خوانده و پردازش می شود، بنابراین می توانیم دستورها یا اسکریپت هایی را درون آن بنویسیم که می خواهیم آنها در زمان بیرون رفتن از سیستم انجام (اجرا) شوند. برای نمونه در این فایل می تواند دستور clear_console باشد که نخست صفحه نمایش را پاک می کند و سپس شما از حساب کاربری تان بیرون می روید. شکل زیر نشان می دهد که دستور clear_console برای پاک کردن کنسول پیش از بیرون رفتن از حساب کاربری، انجام می شود.

توجه کنید در بیشتر سازمان ها و محیط هایی که لینوکس را به کار می برند، لینوکس فاقد واسط کاربری GUI مانند Gnome و KDE است. همچنین کاربران با SSH و از راه دور و به سرور وصل می شوند که دیگر هیچ میزکاری در این ارتباط راه دور در کار نیست و همه به گونه خط فرمان است.

کاربرد و تفاوت میان bashrc با bash_profile و bash_logout

توجه کنید که دست کم یکی از این دو فایل در زیر دایرکتوری خانگی همه کاربران هست و هر دو پنهان شده اند، زیرا آغاز نام آنها یک نقطه گذاشته شده است. فایل HOME/.bash_profile تنها زمانی خوانده و پردازش و تفسیر می شود که از یک Interactive Login Shell به سیستم وارد شویم ولی هر زمان که یک پوسته bash فراخوانی شود، فایل HOME/.bashrc خوانده می شود. بنابراین فایل HOME/.bash_profile در زمان ورود به سیستم خوانده می شود، پس می توانیم دستورها یا اسکریپت هایی را در آن مشخص کنیم، تا آنها در زمان ورود به سیستم، انجام (اجرا) شوند.

  • فایل HOME/.bash_profile$ در زمان ورود (Login) به سیستم از یک Login Shell خوانده وتفسیر می شود.
  • فایل HOME/.bash_logout$ در زمان بیرون رفتن (Logout) از سیستم خوانده و تفسیر می شود.
  • فایل HOME/.bashrc$ هر زمان که یک پوسته bash فراخوانی شود، خوانده و پردازش می شود. هر گاه که یک پنجره گرافیکی برنامه ترمینال در میزکاری مانند گنوم را باز می کنیم، پس یک پوسته bash فراخوانی می شود.
  • در هر دو فایل HOME/.bash_profile$ و HOME/.bashrc$ می توانید متغیرها، نام های مستعار و توابع خود را تعریف کنید ولی بستگی دارد که کدام یک در دایرکتوری خانگی شما هست.
  • اگر یکی از این دو فایل نباشد، نگران نباشید، می توانید آن را دستی بسازید. پوسته bash با نبود یکی از آنها ایرادی نمی گیرد ولی باید قابل خوانده شده (دارای مجوز read) باشند.

فایل etc/profile/

دو فایل HOME/.bashrc$ و HOME/.bash_profile$ هر دو پیکربندی هایی را برای یک کاربر نگهداری می کنند ولی دسته دیگری از فایل های راه انداز Bash (یا هر پوسته دیگری) هستند که به گونه سراسری پیکربندی ها را در خود نگه می دارند. دوتای این فایل ها، etc/profile/ و etc/bashrc/ نام دارند.

توجه کنید که فایل های راه انداز پیکربندی هایی را برای محیط لینوکس نگه داری می کنند که می توانند به گونه سراسری یا به گونه به ازای هر کاربر باشند.

شکل زیر نمونه ای از محتوای فایل را در توزیع لینوکسی ابوتنو ۱۸.۰۴ نشان می دهد که تنها بخشی از آن را برای بازگویی کاربرد این فایل نمایان کرده ایم. در بخش قرمز رنگ، بررسی می شود که آیا شناسه کاربری که به سیستم وارد شده است، برابر با شماره صفر است یا نه؟ اگر باشد، پس کاربر root است، پس باید کاراکتر # در خط اعلان درون خط فرمان نشان داده شود. ولی اگر کاربری جز root باشد، پس شناسه کاربری آن صفر نیست، پس باید کاراکتر $ برای آن نشان داده شود.

تنها کاربر root در لینوکس (ودیگر سیستم عامل های یونیکسی) است که شناسه کاربری یا User Id آن برابر شماره صفر است.
زمانی که کاربری ساده (root نباشد) به سیستم وارد می شود، خط فرمانی را باز کند، پیش روی خط اعلان (یا Command Prompt) آن کاراکتر $ گذاشته می شود.