- صفحه راهنما
- دستور man
- regex (Regular Expression)
- الگوها pattern
- ورودی ، خروجی و خطاهای استاندارد (stdout/stdin/stderr)
- هدایت ورودی و خروجی (I/O) در لینوکس
- دستور grep
- Pipeline
- دستور grep
- Script file
- batch file (in Microsoft Windows) PowerShell
- خط فرمان (Command Line Interface)
- # پوسته لینوکس (Shell)
- # پایانه و راه برقراری تعامل (Terminal)
- Shell script
- dpkg/apt
- متغیرهای محیطی
خواه شما یک کاربر حرفهای لینوکس باشید وخواه یک مبتدی، همواره مسائلی وجود دارند که از آنها آگاهی نداشته و برای کسب اطلاعاتی موثق در مورد آنها، نیاز به مستنداتی معتبر دارید که از جملهی این مستندات معتبر لینوکسی، میتوان به موارد زیر اشاره کرد:
-
man pages لینوکس
-
GNU Info لینوکس
-
کامند help و آپشن help- -
-
و مستندات اختصاصی توزیعهای لینوکسی مثلا مستندات توزیع Gentoo
صفحه راهنما به منزله پرکاربردترین مستندات سیستم عاملهای بر پایهی یونیکس همچون لینوکس هستند که به صورت پیش فرض در اکثر توزیعهای لینوکسی گنجانده شدهاند. به طوری که اطلاعات وسیعی در مورد بسیاری از اپلیکیشنها، فایلهای کانفیگ، کرنل و غیره در اختیار کاربران قرار میدهند. جالب است بدانیم که صفحه راهنما برای اولین بار در دهه ی ۱۹۷۰ برای اولین نسخه های سیستم عامل UNIX به کار گرفته شدند. گرچه توضیحاتی که این دست از مستندات در اختیار کاربران مبتدی قرار میدهند تا حدودی گیجکنندهاند، اما به محض این که به روش ارائه مستندات manpage عادت کنیم، میتوانیم آن را به عنوان یکی از قابل اعتماد ترین مستندات لینوکس در نظر بگیریم. به طور کلی، man pages به ۹ فصل مختلف تقسیمبندی میشوند. کاربرد شمارهی فصول به این شکل است که برنامهی man را مجبور میسازد تا اطلاعات مرتبط با جستجوی کاربر را در آن فصل بهخصوص کنجانده بشود. چرا که معمولاً این احتمال وجود دارد که یک کلیدواژه در چندین فصل مختلف توضیح داده شده باشد.
با تایپ کردن دستور man سپس وارد کردن موضوع مورد نظر به عنوان پارامتر این دستور، هر اطلاعاتی که در مورد موضوع مد نظر وجود داشته باشد در اختیارمان قرار خواهد گرفت (البته در صورتی که اطلاعات مد نظر یافت شوند.) این دستور برنامهای تحت عنوان man را اجرا خواهد کرد که این وظیفه را دارا است تا به جستجو، فرمت دهی و نمایش اطلاعاتی که در man pages توزیع لینوکسی قرار گرفتهاند بپردازد.
$ man [−k] name...
روشهای متفاوتی برای استفاده از صفحه راهنما وجود دارد که یکی از آنها استفاده از صفحات راهنمای آنلاین است. اغلب توزیعهای لینوکس دارای صفحه راهنمای آنلاین هستند. وجود این صفحات آنلاین به کاربران اجازه میدهد که به راحتی و سهولت بتوانند مشکلات پیش آمده در حین کار را برطرف کنند.
اگر بخواهیم یک تعریف مختصر از عبارات با قاعده یا عبارات منظم داشته باشیم، روش ها و قواعدهایی هستند که برای استخراج یا بررسی وجود یک بخش خاصی از یک مقدار (عددی، متن، الگو و … استفاده می شود) مورد استفاده قرار میگیرد.
در واقع این قوانین بر اساس قواعد خاص تنظیم می شوند و بخش خاصی از یک متن یا تعداد و … را با توجه به تنظیمات ما استخراج میکنند که در محاسبات دقیق و پیچیده بسیار کاربرد خواهد داشت. استفاده از عبارات با قاعده معمولا در چارچوبهایی مشخص که قادر به پردازش آنها هستند، انجام میشود. عبارات منظم ابزارهایی برای برنامهنویسان فراهم میکنند که بتوان به کمک آنها عبارات، کلمات و الگوهای مورد نظر را در یک رشته متنی پیدا کنند. Expressions Regula محدود به یک زبان خاص نیست و اکثر زبانهای برنامهنویسی این امکان را در خود قرار دادهاند مانند: javascript، پرل، روبی، دلفی، php ،c ،java، و … .
عبارات منظم توسط یک پردازنده که درون زبان برنامهنویسی وجود دارد، تفسیر میشوند. عبارتهای منظم استفاده زیادی در برنامههای کاربردی مختلف دارد. توسط بسیاری از ویرایشگرهای متن (Text Editor) برای انجام اعمال مختلف بر روی رشته مورد استفاده قرار میگیرد.
برای کاربرد و استفاده درست از ریجکس باید الفبای آن را حفظ کرد. این الفبا عبارت است از:
.
(دات) یعنی هر کاراکتری، بجز انتهای خط (اگر dotall معادل false باشد)
*
(اَستِریسک) یعنی به تعداد ۰ یا بیشتر کاراکتر
+
(پلاس ساین) یعنی به تعداد ۱ یا بیشتر کاراکتر
?
(کوئسچن مارک) یعنی مهم نیست در ادامه کاراکتری وجود داشته باشد یا نه (پس از آن باید ۰ یا ۱ کاراکتر بیاید تا تطابق صورت بگیرد).
\d
(بک اسلش دی) یعنی اگر عدد بود
\w
(بک اسلش دبلیو) یعنی اگر حرف بود (الفبای انگلیسی، عدد و آندرلاین)
[XYZ]
یعنی یک تک-کاراکتر از کلاس کاراکترها
[XYZ]+
یعنی یک یا چند کاراکتر از کاراکتر های موجود در دسته
$
(دالر ساین) یعنی پایان رشته خط
^
(سِرکُم فلِکس) یعنی آغاز رشته
[^a-z]
داخل یک کلاس کاراکتر، سرکم فلکس به معنی (نه NOT) میباشد. در این مثال، به معنی “حروف کوچک نبودن” میباشد.
در شرایط عادی هر برنامهای در سیستم عامل لینوکس دارای سه رشته است که در زمان اجرا باز میشوند و به برنامه اضافه میشوند. یکی از رشتهها برای ورودی، یکی از رشتهها برای خروجی و یکی از رشتهها برای پیدا کردن خطاها و گزارش دادن خطاهای احتمالی و وضعیت نرمافزار استفاده میشود. در واقع این موارد بصورت خودکار به Terminal لینوکس شما متصل شدهاند و شما نیازی نیست آنها را اضافه یا حذف کنید ، اما برخی اوقات پیش میآید که شما میخواهید ورودیها و خروجیهای دستورات را به شخصه تعریف کنید. که میتوانید با استفاده از استانداردهای ورودی و خروجی دستورات در لینوکس اینکار را انجام بدهید. بصورت خلاصه ورودی اطلاعات استاندارد در لینوکس به عنوان standard input یا stdin ،خروجی اطلاعات استاندارد بصورت standard output و خطاهای استاندارد به شکل standard error یا stderr نمایش داده میشوند.
##ورودی استاندارد یا stdin
به ورودی استاندارد stdin گفته می شود و stdin بصورت پیشفرض از کیبورد سیستم دریافت میشود. زمانیکه شما چیزی را با کیبورد تایپ میکنید در واقع شما در حال وارد کردن stdin هستید. در لینوکس دو روش برای دریافت stdin وجود دارد.
- ورودی توسط کیبورد
- استفاده از فایل به عنوان ورودی
به محض اینکه شما stdin خودتان را وارد و اجرا کنید خروجی یا standard output ایجاد شده و به سمت کنسول نرمافزار هدایت میشود. در واقع نتیجه خروجی برنامه ما همان stdout است. اینکه output شما به کجا میرود دقیقا بستگی به محل ایجاد شدن process شما دارد، که بصورت معمولا output ترمینال یا کنسولی است که ما از آن دستور را اجرا کردهایم.
خروجی خطا یا Standard Error که به اختصار Stderr گفته میشود، همانند stdout میباشد با این تفاوت که به صورت مستقل برای نمایش خطا استفاده می شود.
یک خصوصیت قدرتمند که توسط اکثر برنامههای تحت خط فرمان لینوکس مورد استفاده قرار میگیرد هدایت ورودی و خروجی است.
اکثر برنامههای خط فرمان که خروجی خود را نمایش میدهند، این خروجی را به مرکزی به نام خروجی استاندارد میفرستند. و بصورت پیش فرض خروجی استاندارد نیز محتوای خودش، را به صفحه نمایش میفرستد.برای هدایت محتوای خروجی استاندارد به یک فایل از کاراکتر <
استفاده میشود.
بسیاری از دستورات میتوانند از مرکزی به نام ورودی استاندارد، ورودی بپذیرند. بصورت پیشفرض ورودی استاندارد محتوای خود را از کیبورد دریافت میکند ولی مشابه خروجی استاندارد میتوان این را نیز هدایت کرد. برای هدایت ورودی استاندارد بجای کیبورد از یک فایل، می توان از کاراکتر >
استفاده کرد.
توانایی خواندن اطلاعات از ورودی استاندارد و ارسال آن به خروجی استاندارد با یک ویژگی شل (Shell) به نام پایپ لاین در خط فرمان Pipelines یا همان کاراکتر خط عمودی |
ایجاد شده است . با استفاده از عملگر خط عمودی |
خروجی استاندارد یک دستور به داخل ورودی استاندارد دستوری دیگر ریخته می شود. با اتصال دستورها به یکدیگر می توانید شاهکارهای شگفت انگیزی انجام دهید.
$ ls -l | less
در این مثال خروجی دستور ls بعنوان ورودی به دستور less داده شده است. دستور less برای مشاهده فایلهایی که اطلاعات آنها بیشتر از یک صفحه هست و یا برای مشاهده خروجی دستوراتی که بیش از یک صفحه هستند استفاده میشود.
grep دستوری است که به عنوان ابزاری برای جستجو در متن به منظور یافتن الگویی خاص در فایلهای مختلف مورد استفاده قرار میگیرد که به راحتی میتوان این ابزار را با دستور رجیکس مورد استفاده قرار داد. برای آشنایی با دستورات مختلف grep میتوانید به صفحه راهنمای مربوط به آن مراجعه کنید.
$ grep [−E|−F] [−c|−l|−q] [−insvx] −e pattern_list
[−e pattern_list]... [−f pattern_file]... [file...]
grep [−E|−F] [−c|−l|−q] [−insvx] [−e pattern_list]...
−f pattern_file [−f pattern_file]... [file...]
grep [−E|−F] [−c|−l|−q] [−insvx] pattern_list [file...]
اسکریپت یک برنامه یا کد نوشته شده است که اجازه میدهد تا کنترل خاصی بر روی یک یا بسیاری از نرم افزارها داشته باشیم. برنامههای نوشته شده با ” زبان اسکریپت” معمولا بصورت فرمان و تفسیر است،که به همین دلیل بسیاری از آنها به طور معمول سریعتر از برنامههای ایجاد شده با C++ , C میباشد. زبان اسکریپت معمولا خاص و با قاعده است. علاوه بر این، زبانهای اسکریپت مبتنی بر متن هستند و اغلب بصورت پروژههای منبع باز هستند. این زبان بسیار محبوب و توسط بسیاری از جوامع بزرگ مورد حمایت قرار گرفته و برای ایجاد و مدیریت صفحات وب مورد استفاده قرار میگیرد. توسعه دهندگان وب و مدیران سرور هم معمولا آنها را در پروژههای مربوط به وب استفاده میکنند.
بچ فایل یک فایل متنی است که شامل یکسری دستورالعملهای خاص است.که هدفی را دنبال میکند. با دستور echo شروع شده و با Exit پایان می یابد.این فایل با پسوند bat. ذخیره میشود.
$ bash [options] [command_string | file]
اکثر سیستم عامل ها همانند سیستم عامل ویندوز، لینوکس و مکینتاش، جدا از داشتن یک رابط کاربری گرافیکی(GUI) ، دارای یک رابط کاربری خط فرمان نیز میباشند که به طور کلی به این رابط کاربری Command Line Interface گفته میشود. در رابط کاربری گرافیکی برای کار کردن با سیستم عامل، کافیست از آیکون های تعبیه شده در محیط گرافیکی استفاده کنیم اما در حالت خط فرمان (CLI) این سهولت وجود نداشته و برای استفاده از سیستم عامل باید از دستورات آن استفاده کنیم. برای کار کردن با سیستم عامل از طریق خط فرمان باید از دستورات آن استفاده نمود، در محیط گرافیکی هر برنامه برای خود یک رابط کاربری گرافیکی دارد. اما در خط فرمان دیگر هیچ محیط گرافیکی وجود نداشته و در واقع با یک محیط مبنی بر متن (Text Based) روبرو هستیم که قابلیت کنترل و مدیریت برنامه را به ما میدهد. یعنی هر کاری که بخواهیم با خط فرمان انجام دهیم باید به صورت متنی انجام دهیم، مثلا اگر بخواهیم فایلها و پوشههایمان را بررسی کنیم باید از دستور آن استفاده کنیم و در نهایت آنچه که به ما نمایش داده میشود (Output) فقط متن میباشد. قطعا در ویندوز پنجره سیاه رنگ محاورهای که ویژه نوشتن کد است و یا بعضی از برنامهها با پنجره سیاه شروع و یکسری نوشته در آن ظاهر شده است را دیدهاید، این صفحه همان صفحه خط فرمان و یا Command Prompt و به اختصار cmd میباشد. این خط فرمان در واقع همان ویندوز قدیمی مایکروسافت به نام Ms-Dos میباشد که کاربر میتواند در آن بصورت متنی یکسری دستوراتی را اجرا نماید.
بطور کلی برای اجرا شدن یک دستور در سیستم عاملها ابتدا باید دستور مورد نظر به زبان ماشین تبدیل شود تا برای هستهی سیستم عامل قابل درک باشد و پس از آن این دستور توسط هسته پردازش و در نهایت اجرا میشود. بنابراین برای برقراری ارتباط ما با هستهی سیستم عامل به یک واسط نیاز داریم تا دستوری را که توسط کاربر ایجاد شده است را دریافت و آنرا به زبانی قابل فهم برای هسته ترجمه کند. این واسط همان shell (پوسته) میباشد. به عبارت دقیقتر پوستهها برنامههایی هستند که دستورات متنی (text-based) قابل فهم برای بشر را دریافت و آنها را به زبان کرنل (هسته) ترجمه میکنند تا kernel بتواند آنها را تحلیل و پردازش کند. از همان ابتدای شروع پروژه یونیکس در سال 1970، برنامه شل وجود داشت که آن را با نام V6 Shell میشناختند و توسط شخصی به نام «کن تامسون» (Ken Thomson) نوشته شده بود. در سال 1977، «بورن شل» (Bourne Shell) توسعه این برنامه را تا امروز ادامه داد و به شل پیشفرض برای اکانتهای root در لینوکس درآمد. گفتنی است نسخهی یاد شده قابلیت اسکریپتنویسی را محقق کرد که در طول سالهای زیاد ابزار قدرتمندی بود. توسعههای بعدی شل در سال 1980 سبب شد که نسخههای جانبی خیلی محبوبی از آن منتشر شود. دو نمونه از محبوبترین این نسخهها C-Shell و Korn Shell بودند. هر یک از این شلها دستورات مختص خود را دارند که در برخی موارد با شل اصلی تفاوتهای بنیادی دارد. پوستههای مختلفی وجود دارند اما بصورت پیش فرض لینوکس ها از شلی به نام Bash) Bourne-Again-Shell) استفاده میکنند . بش (Bash) بهطور قطع رایجترین پوسته سیستمهای لینوکسی است و عموما بهعنوان پوسته پیشفرض روی اکثر توزیعها نصب میشود. میتوان بش را از بنیاد نرمافزارهای آزاد تهیه کرد. اما اگر از توزیعهای پرطرفدار لینوکسی استفاده میکنید، همهشان از بش استفاده میکنند. پوستههای دیگری هم برای سیستم عامل لینوکسی وجود دارند، از میان آنها میتوان به sh (پوسته بورن)،CSH ، (پوسته سی)، KSH (پوسته کورن) و TCSH (پوسته سی تنکس) اشاره کرد. تمام این پوستهها با وجود اینکه کارایی یکسانی دارند، اما در باطن سرویسهای مختلفی به کاربر عرضه میکنند.
سادهترین راه برای برقراری ارتباط و وارد کردن دستورات به پوسته، از طریق پایانه (ترمینال) است. در ترمینال میتوانید هر تعداد دستور که میخواهید برای کنترل دستی کامپیوتر وارد کنید. میتوانید اطلاعات درایورها را ویرایش کنید یا حتی به نصب برنامهها بپردازید. گاهی اوقات لزوم استفاده از این دستورات آنقدر زیاد میشود که بسیاری از کاربران عادی از کار با لینوکس خسته میشوند. برنامههای زیادی هستند که در پوسته اجرا میشوند. از مرورگرهای اینترنت بگیرید تا بازیهای کامپیوتری و برنامههایی که باید با آنها اتصال بیسیم را فعال کرد. اینها همه پوستهای درون پوسته دیگر بهشمار میروند. صد البته برنامههایی هستند که بهطور غیرمستقیم یک پوسته بهشمار میآیند. نرمافزار اتصال اینترنت شما، مرورگر موزیلا فایرفاکس و بسیاری از نرمافزارهای دیگر همگی یک پوسته هستند که با سیستم عامل در تعاملاند. برای درک بهتر اینکه Terminal چیست، باید به دوران مینفریمها برگردیم. یک Mainframe کامپیوتری با تعداد کاربران زیاد بود و در مراکز تجاری بزرگ و دانشگاهها استفاده میشد؛ اما وقتی تعداد زیادی از افراد متقاضی استفاده از یک کامپیوتر به طور همزمان هستند چه راهی پیش روی شما است و چه طور این سیستم را به اشتراک میگذارید؟ به بیان امروزیتر و در یک کلام، به هر کدامشان یک مانیتور، یک کیبورد و ماوس میدهیم. در عصر مینفریمها، از ترمینال استفاده میشد. یک ترمینال طبق تعریف لغتنامه، (پایان یک چیز یا نقطه ارتباط با چیزی است) گاهیاوقات هم هردو. مینفریمها از صفحه نمایش و کیبوردهایی یا بهتر بگوییم ترمینالهایی در اطراف بدنهی خود بهره میبردند به طوری که کاربران میتوانستند از Mainframe استفاده کنند.
مزیت استفاده از اسکریپتنویسی شل خودکارسازی کارهایی است که مکرراً اجرا میشوند. به عنوان مثال، فرض کنید شما یک کار مشخص را هر روز در سیستم خود انجام میدهید. اگر برای این کار مجبورید هر روز در لینوکس خود دستورات متعددی را اجرا کنید، میتوانید به راحتی این دستورات را در یک فایل ذخیره کنید و به عنوان یک اسکریپت شل اجرا نمایید. یکی دیگر از مزایای اسکریپتنویسی شل این است که میتوان مجموعهای به هم پیوسته از دستورات را در یک دستور واحد ترکیب کرد؛ امری که در برخی موارد میتواند بسیار کاربردی باشد. بدون شک به خاطر سپردن یک دستور خیلی راحتتر از چند دستور است. همچنین نیازی نیست ترتیب اجرای آنها را به یاد داشته باشید. تمام کارهایی که با اسکریپت شل انجام میشود را با یک برنامهای که با زبان C یا ++C نوشته شده نیز میتوان انجام داد. اما نوشتن و اشکالزدایی یک اسکریپت شل به مراتب سادهتر از برنامههای C و ++C است. مخصوصا برای امور مدیریتی سیستم مانند اجرای دستورات خارجی، ایجاد و حذف فایلها و پوشهها، مسیردهی به خروجی و … . برنامههای C و ++C برای عملیاتهای سطح پایینتر مانند فراخوانیهای سیستمی، تغییر ساختار دادهها و … مناسبتر هستند. یک اسکریپت شل چون ماهیت یک فایل متنی را دارد، به راحتی قابل مشاهده است و شما میتوانید با نگاه کردن به کدهای آن بفهمید که دقیقا چه کاری قرار است انجام شود. اما در برنامههای نوشته شده با زبانهایی مانند C و ++C تنها راهی که برای فهمیدن این موضوع وجود دارد این است که در زمان اجرا راهنماهایی برای آنها وجود داشته باشد یا به کد منبعشان دسترسی پیدا کنید. چون معمولا این برنامهها کامپایل شده و به یک فایل اجرایی تبدیل شدهاند بنابراین شما کدهای منبع را نمیبینید. برای مثال با استفاده از اسکریپت شل میتوانید ببینید که آیا اجرای این کد فایلی را حذف میکند یا نه و در صورت لزوم آن فایلها را در مسیر دیگری کپی کنید. همچنین خطایابی در اسکریپتهای شل بسیار سادهتر است. چون شما کد را میتوانید ببینید. مثلا ممکن است به خاطر وجود نداشتن یک پوشه خاص کد شما با خطا مواجه شود. بنابراین میتوانید به راحتی پوشه مورد نظر را در مسیر خواسته شده ایجاد کنید. اسکریپتهای شل میتوانند به راحتی به سیستم عاملهای یونیکس و شبه یونیکس منتقل شده (portable) و اجرا شوند. حتی انتقال اسکریپتهای شل از معماریهای دیگر مانند X86، Spark، MIPS و … بسیار راحتتر از برنامههای نوشته شده به زبانهای C و ++C است.با استفاده از دستور زیر میتوان یک shell script در ترمینال لینوکس ایجاد کرد.
$ nano [options]
یکی از ویژگیهایی که باعث جذب کاربران ویندوز به لینوکس میشود، نحوهی نصب نرمافزارها در این سیستم عامل است. در لینوکس به جای دانلود یک فایل اجرایی (exe) از یک وبسایت، اجرای آن و آرزوی اینکه فایل اجرایی دانلود شده فایلهای کتابخانهای (DLL) قبلی شما را به هم نریزد، و یا نرمافزارهای مخرب و مشکوک بر روی سیستم شما نصب نکند، فایلهای مورد نیازتان را مستقیماً از گنجینهای غنی از نرمافزارها که مخزن یا ریپازیتوری (repositories) نامیده میشوند دریافت میکنید. همهی نرمافزارهای موجود در مخزن برای همان توزیع بستهبندی شده و برای سازگاری با بقیهی توزیعها هم آزمایش شدهاند. یک مخزن مجموعهای از پکیجهای نرمافزاری برای یک توزیع خاص است. هر نسخهی اصلی یک توزیع لینوکس، مخزن مخصوص به خودش را دارد و پکیجها برای آن نسخه ساخته و تست میشوند. اما مخزن چیزی بیش از مجموعهای از فایلها است. هر مخزن (که گاهی به اختصار به آن ریپو (repo) هم گفته میشود) ایندکس شده است تا یافتن چیزی که میخواهید در آن به آسانی صورت بگیرد. همچنین بدون اینکه نیازی به سر زدن به وبسایت هر نرمافزار وجود داشته باشد، میتوان به آسانی آپدیت بودن مدیریت پکیج را چک کرد. dpkg دستور پایهای برای سروکار داشتن با بستههای دبیان است. اگر بسته .deb دارید، این dpkg است که اجازه نصب و بررسی محتویات داخل آن را میدهد. اما این برنامه دید نسبی از دنیای دبیان دارد: میداند چه چیزهایی روی سیستم نصب شده است و چه پارامترهای خط فرمانی را دریافت کرده است، اما چیزی راجع به سایر بستههای موجود نمیداند. بنابراین، اگر یک وابستگی فراهم نباشد، کل فرآیند شکست میخورد. از طرف دیگر، ابزاری مانند apt فهرستی از وابستگیهای مورد نیاز جهت نصب برنامه را بدست آورده و به صورت خودکار اقدام به نصب آنها میکنند. dpkg باید به عنوان یک ابزار سیستمی (backend) و apt به عنوان یک ابزار سمت کاربر دیده شوند، که به محدودیتهای اولی غلبه میکند. این ابزارها در کنار یکدیگر کار میکنند و هر یک ویژگیهای خاص خود را دارند که برای فعالیتهای مختلفی در نظر گرفته شدهاند.
$ dpkg [option...] action
$ sudo apt install
متغیرهای محیطی صرفاً یکسری نامهای از پیش تعریف شدهیی هستند که دارای مقداری خاص میباشند که میتوانند نحوه رفتار کردن فرایندهای در حال اجرا را تغییر داده و بر روی آنها اثر بگذارند.متغیرهای محیطی، از فرایند والد به فرایندهای فرزند به ارث میرسند. این متغیرها بخشی از محیط عملیاتی هستند که فرایند در آن اجرا میشود. برخی از این متغیرها به صورت پیشفرض در لینوکس وجود دارند اما این در حالی است که کاربران لینوکس این امکان را دارند تا متغیرهای اختصاصی خود را هم ایجاد کنند. برای دستیابی به لیست این دست متغیرها، صرفاً کافی است تا دستور set را در کامند لاین وارد نمایید. این متغیرها در شکل مدرن خود در سال ۱۹۷۹ و در نسخه ۷ یونیکس معرفی شدند و از آن موقع تاکنون در تمامی نسخههای یونیکس از لینوکس تا مک اواس ۱۰ بکار گرفته شدهاند.از انواع متغیرهای محیطی می توان به متغیر محیطی HOME، PATH، وHOST اشاره کرد.