هر برنامهای اطلاعات، منابع، امتیازها و محدودیتهایی از پردازش والد خود به ارث میبرد. ( برای بحث پیشرفتهتر در این موضوع، بخش مدیریت پردازش را ملاحظه کنید.)یکی از آن منابع، مجموعهای از متغیرها به نام متغیرهای محیط میباشند.
در Bash, متغیرهای محیط تا اندازه بسیار زیادی مشابه متغیرهای معمولی مورد استفاده ما، کار میکنند. تنها تفاوت واقعی، آن است که آنها قبلاً، موقعی که اسکریپت شروع به اجرا میکند، مقرر شدهاند، ما خودمان نباید به آنها مقداردهی کنیم.
به طور سنتی، متغیرهای محیط نامهایی تماماً با حروف بزرگ دارند، از قبیل
ارسال اطلاعات به برنامهها از طریق متغیرهای محیط، در بسیاری موقعیتها سودمند است. یکی از آنها اولویتهای کاربر است. در سیستمهای یونیکسی، همه کاربران علایق و بیعلاقگیهای یکسان در برنامههای کاربردی ندارند، و در برخی موارد، ممکن است همه به یک زبان صحبت نکنند. بنابراین، برای کاربران سودمند خواهد بود که به هر برنامه بگویند کدام ویرایشگر مورد علاقه آنها برای اجرا میباشد(متغیر محیطی
متغیرهای محیط همچنین میتوانند به طور بینهایت آسانی در حین کار تنظیم گردند( آسانتر از آنکه اگر همان اطلاعات در یک فایل ذخیره شده باشند). موقعی که در Bash دستوری را اجرا میکنید، گزینهای دارید، برای تعیین یک تغییر موقتی محیط که فقط در طول مدت اجرای آن فرمان مؤثر است. این با قرار دادن عبارت
$ ls/ tpm ls: no se puede acceder a /tpm: No existe el fichero o el directorio $LANG = C ls/ tpm ls: cannot access /tpm: No such file or directory
محیط موقتی
اگر میدانید که برخی اطلاعات در یک متغیر محیط ذخیره شده است، در اسکریپت، میتوانید درست مانند سایر متغیرها از آن استفاده کنید:
if [[ $ DISPLAY ]] xterm; then-e top else topfi
این مثال، در صورتی که متغیر محیطی
اگر میخواهید اطلاعاتی را در متغیر محیطی قرار دهید که به پردازشهای فرزند به ارث برسد، فرمان export را به کار ببرید:
exportMYVAR = something
بخش دشوار مطلب در اینجا آنست که تغییرات محیط شما فقط برای فرزندان موروثی خواهد بود. نمیتوانید محیط یک برنامه را که از قبل در حال اجراست، یا شما آن را شروع نکردهاید، تغییر دهید.
تغییر محیط و سپس اجرا، برای برخی برنامهها به شدت رایج میباشد. اسکریپتی که این کار را به عنوان وظیفه اصلیاش انجام میدهد یک WrapperScript مینامند.
در اسکریپتهای خود از نامهای تماماً با حروف بزرگ برای متغیرها استفاده نکنید. برای پرهیز از تصادمات، حروف کوچک یا ترکیبی از کوچک و بزرگ به کار ببرید .
من سعی میکنم اسکریپتی بنویسم که دایرکتوری جاری را تغییر دهد( یا یک متغیر را تنظیم کند)، اما بعد از به پایان رسیدن اسکریپت، در همان جایی هستم که از آنجا شروع کرده بودم(یا متغیر من موجود نیست)!