في أنظمة التشغيل القائمة على يونكس مثل لينكس، تلعب متغيرات الصدفة (Shell Variables) ومتغيرات البيئة (Environment Variables) دورًا حيويًا في التحكم بسلوك النظام وتحديد الإعدادات الافتراضية للبرامج والعمليات. هذه المتغيرات تُستخدم بشكل واسع ضمن بيئة سطر الأوامر لتخزين معلومات مؤقتة أو دائمة مثل المسارات، إعدادات اللغة، بيانات المستخدم، وغيرها. فهم كيفية قراءة هذه المتغيرات وضبطها بدقة يُعد من المهارات الأساسية لأي مستخدم أو مسؤول نظام في بيئة لينكس.
الفرق بين متغيرات البيئة ومتغيرات الصدفة
رغم أن المصطلحين غالبًا ما يُستخدمان بالتبادل، فإن هناك فرقًا جوهريًا بينهما:
-
متغيرات الصدفة (Shell Variables): هي المتغيرات التي تُحدد وتُستخدم داخل جلسة معينة للصدفة (مثل bash أو zsh). تُنشأ عند تنفيذ الأمر وتختفي عند إغلاق الجلسة.
-
متغيرات البيئة (Environment Variables): هي متغيرات تكون متاحة للصدفة ولكافة العمليات الفرعية المنبثقة عنها. تُستخدم لنقل معلومات بين العمليات.
كل متغير بيئة هو متغير صدفة، ولكن ليس كل متغير صدفة يُعتبر متغير بيئة ما لم يتم تصديره (export).
عرض متغيرات البيئة والصدفة
يمكن عرض المتغيرات الحالية باستخدام أوامر متعددة:
1. الأمر printenv
يعرض هذا الأمر متغيرات البيئة فقط:
bashprintenv
لعرض متغير معين:
bashprintenv PATH
2. الأمر env
يعرض البيئة الحالية التي تُمرر للعمليات:
bashenv
3. الأمر set
يعرض جميع المتغيرات، بما في ذلك تلك الخاصة بالصدفة:
bashset
4. الأمر declare (في bash)
لعرض المتغيرات بتنسيق منظم:
bashdeclare -p
قراءة متغيرات البيئة في الشل
لقراءة قيمة متغير بيئة معين يمكن استخدام:
bashecho $HOME
echo $PATH
هذا يعرض القيمة المخزنة في المتغيرات HOME و PATH.
إنشاء وضبط المتغيرات
1. تحديد متغير صدفة
bashmyvar="Hello Linux"
echo $myvar
2. تحديد متغير بيئة باستخدام export
bashexport myenv="This is an environment variable"
3. تعديل متغير موجود
bashexport PATH="/opt/tools:$PATH"
4. إزالة متغير
bashunset myvar
unset myenv
ملفات ضبط المتغيرات تلقائيًا
عند الدخول إلى الجلسة التفاعلية، تُحمَّل ملفات إعدادات تحتوي على متغيرات بيئة مثل:
| الملف | الوصف |
|---|---|
~/.bashrc |
يُستخدم في الجلسات التفاعلية للـbash |
~/.profile |
يُستخدم لضبط متغيرات البيئة في جلسات تسجيل الدخول |
/etc/environment |
يُستخدم لضبط متغيرات البيئة العامة على مستوى النظام |
/etc/profile |
يتم تحميله عند بدء جلسة bash للمستخدمين |
مثال لإضافة متغير دائم:
bashecho 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> ~/.bashrc
بعد التعديل يجب تنفيذ:
bashsource ~/.bashrc
المتغيرات الأساسية في لينكس
بعض المتغيرات تُستخدم على نطاق واسع:
| المتغير | الوظيفة |
|---|---|
PATH |
يحتوي على مسارات البحث عن الأوامر |
HOME |
دليل المستخدم |
USER |
اسم المستخدم الحالي |
SHELL |
الصدفة الافتراضية للمستخدم |
LANG |
إعدادات اللغة والتعريب |
PWD |
الدليل الحالي |
EDITOR |
محرر النصوص الافتراضي |
كيفية تمرير المتغيرات إلى العمليات الفرعية
في حال تحديد متغير في جلسة معينة، لن تتمكن العمليات الفرعية من الوصول إليه إلا في حال تم تصديره:
bashvar1="local"
export var2="exported"
bash -c 'echo $var1; echo $var2'
في هذا المثال، فقط var2 سيكون مرئيًا للصدفة الفرعية.
استخدام المتغيرات في السكريبتات
في سكريبت Bash يمكن استخدام المتغيرات بهذه الطريقة:
bash#!/bin/bash
export MY_NAME="مواضيع"
echo "مرحبًا بك في $MY_NAME"
يمكن أيضًا تمرير المتغيرات عند استدعاء السكريبت:
bashMY_NAME="زائر" ./myscript.sh
التعامل مع المتغيرات الحساسة
من الأفضل التعامل مع المتغيرات التي تحتوي على معلومات حساسة (مثل كلمات المرور وبيانات الاتصال) بحذر، وتجنب طباعتها أو تسجيلها في ملفات السجل. يمكن قراءة المتغير من المستخدم بصمت:
bashread -s -p "ادخل كلمة المرور: " PASSWORD
قراءة متغيرات البيئة من ملفات التهيئة
قد تُستخدم ملفات بصيغة .env في بعض المشاريع لتهيئة البيئة، ويمكن قراءتها ضمن سكريبت bash باستخدام:
bashset -a
. ./.env
set +a
تأثير المتغيرات على أداء النظام
بعض المتغيرات مثل PATH و LD_LIBRARY_PATH قد تؤثر على الأداء أو السلوك الأمني للنظام عند إعدادها بشكل خاطئ. على سبيل المثال، وضع مسارات غير آمنة في مقدمة متغير PATH قد يؤدي إلى تشغيل برامج خبيثة بدلاً من البرامج النظامية الأصلية.
جدول ملخص لأوامر التعامل مع المتغيرات
| الأمر | الوظيفة |
|---|---|
echo $VAR |
عرض قيمة متغير |
export VAR=value |
تعيين متغير بيئة |
unset VAR |
إزالة متغير |
printenv |
عرض متغيرات البيئة فقط |
env |
تشغيل أمر في بيئة مخصصة |
set |
عرض جميع المتغيرات |
declare |
إدارة المتغيرات في bash |
source file |
تحميل إعدادات من ملف |
توصيات عند إدارة المتغيرات
-
استخدم أسماء وصفية للمتغيرات لتجنب التعارض.
-
لا تُصدِّر المتغيرات إلا عند الضرورة.
-
احرص على التحقق من القيم قبل استخدامها في السكريبتات.
-
قم دائمًا بمراجعة ملفات الإعدادات بعد التعديل.
-
لا تضع مسارات بها صلاحيات كتابة عامة داخل
PATH.
الخاتمة
تمثل متغيرات البيئة والصدفة العمود الفقري لإدارة الإعدادات والسلوك العام في نظام لينكس. بإتقان التعامل معها، يمكن تبسيط العمل البرمجي، تعزيز الأمان، وضبط البيئة التشغيلية بطريقة أكثر كفاءة ودقة. لذا فإن فهم بنية هذه المتغيرات وكيفية قراءتها وتعديلها وحفظها بشكل دائم هو خطوة ضرورية لكل مستخدم محترف أو مبتدئ في عالم لينكس.
الكلمات المفتاحية: متغيرات البيئة, متغيرات الصدفة, لينكس, bash, إعدادات النظام, export, PATH, shell scripting, ملفات التهيئة, إدارة النظام

