ديف أوبس

متغيرات البيئة والصدفة في لينكس

في أنظمة التشغيل القائمة على يونكس مثل لينكس، تلعب متغيرات الصدفة (Shell Variables) ومتغيرات البيئة (Environment Variables) دورًا حيويًا في التحكم بسلوك النظام وتحديد الإعدادات الافتراضية للبرامج والعمليات. هذه المتغيرات تُستخدم بشكل واسع ضمن بيئة سطر الأوامر لتخزين معلومات مؤقتة أو دائمة مثل المسارات، إعدادات اللغة، بيانات المستخدم، وغيرها. فهم كيفية قراءة هذه المتغيرات وضبطها بدقة يُعد من المهارات الأساسية لأي مستخدم أو مسؤول نظام في بيئة لينكس.


الفرق بين متغيرات البيئة ومتغيرات الصدفة

رغم أن المصطلحين غالبًا ما يُستخدمان بالتبادل، فإن هناك فرقًا جوهريًا بينهما:

  • متغيرات الصدفة (Shell Variables): هي المتغيرات التي تُحدد وتُستخدم داخل جلسة معينة للصدفة (مثل bash أو zsh). تُنشأ عند تنفيذ الأمر وتختفي عند إغلاق الجلسة.

  • متغيرات البيئة (Environment Variables): هي متغيرات تكون متاحة للصدفة ولكافة العمليات الفرعية المنبثقة عنها. تُستخدم لنقل معلومات بين العمليات.

كل متغير بيئة هو متغير صدفة، ولكن ليس كل متغير صدفة يُعتبر متغير بيئة ما لم يتم تصديره (export).


عرض متغيرات البيئة والصدفة

يمكن عرض المتغيرات الحالية باستخدام أوامر متعددة:

1. الأمر printenv

يعرض هذا الأمر متغيرات البيئة فقط:

bash
printenv

لعرض متغير معين:

bash
printenv PATH

2. الأمر env

يعرض البيئة الحالية التي تُمرر للعمليات:

bash
env

3. الأمر set

يعرض جميع المتغيرات، بما في ذلك تلك الخاصة بالصدفة:

bash
set

4. الأمر declare (في bash)

لعرض المتغيرات بتنسيق منظم:

bash
declare -p

قراءة متغيرات البيئة في الشل

لقراءة قيمة متغير بيئة معين يمكن استخدام:

bash
echo $HOME echo $PATH

هذا يعرض القيمة المخزنة في المتغيرات HOME و PATH.


إنشاء وضبط المتغيرات

1. تحديد متغير صدفة

bash
myvar="Hello Linux" echo $myvar

2. تحديد متغير بيئة باستخدام export

bash
export myenv="This is an environment variable"

3. تعديل متغير موجود

bash
export PATH="/opt/tools:$PATH"

4. إزالة متغير

bash
unset myvar unset myenv

ملفات ضبط المتغيرات تلقائيًا

عند الدخول إلى الجلسة التفاعلية، تُحمَّل ملفات إعدادات تحتوي على متغيرات بيئة مثل:

الملف الوصف
~/.bashrc يُستخدم في الجلسات التفاعلية للـbash
~/.profile يُستخدم لضبط متغيرات البيئة في جلسات تسجيل الدخول
/etc/environment يُستخدم لضبط متغيرات البيئة العامة على مستوى النظام
/etc/profile يتم تحميله عند بدء جلسة bash للمستخدمين

مثال لإضافة متغير دائم:

bash
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> ~/.bashrc

بعد التعديل يجب تنفيذ:

bash
source ~/.bashrc

المتغيرات الأساسية في لينكس

بعض المتغيرات تُستخدم على نطاق واسع:

المتغير الوظيفة
PATH يحتوي على مسارات البحث عن الأوامر
HOME دليل المستخدم
USER اسم المستخدم الحالي
SHELL الصدفة الافتراضية للمستخدم
LANG إعدادات اللغة والتعريب
PWD الدليل الحالي
EDITOR محرر النصوص الافتراضي

كيفية تمرير المتغيرات إلى العمليات الفرعية

في حال تحديد متغير في جلسة معينة، لن تتمكن العمليات الفرعية من الوصول إليه إلا في حال تم تصديره:

bash
var1="local" export var2="exported" bash -c 'echo $var1; echo $var2'

في هذا المثال، فقط var2 سيكون مرئيًا للصدفة الفرعية.


استخدام المتغيرات في السكريبتات

في سكريبت Bash يمكن استخدام المتغيرات بهذه الطريقة:

bash
#!/bin/bash export MY_NAME="مواضيع" echo "مرحبًا بك في $MY_NAME"

يمكن أيضًا تمرير المتغيرات عند استدعاء السكريبت:

bash
MY_NAME="زائر" ./myscript.sh

التعامل مع المتغيرات الحساسة

من الأفضل التعامل مع المتغيرات التي تحتوي على معلومات حساسة (مثل كلمات المرور وبيانات الاتصال) بحذر، وتجنب طباعتها أو تسجيلها في ملفات السجل. يمكن قراءة المتغير من المستخدم بصمت:

bash
read -s -p "ادخل كلمة المرور: " PASSWORD

قراءة متغيرات البيئة من ملفات التهيئة

قد تُستخدم ملفات بصيغة .env في بعض المشاريع لتهيئة البيئة، ويمكن قراءتها ضمن سكريبت bash باستخدام:

bash
set -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, ملفات التهيئة, إدارة النظام