قائمة متغيرات البيئة في Linux / Unix

⚡ ملخص ذكي

متغيرات البيئة في أنظمة لينكس ويونكس هي قيم ديناميكية مسماة تحدد كيفية عمل البرامج والصدفة، وتخزن إعدادات مثل مسارك، ودليل المنزل، والمحرر الافتراضي، واللغة، والصدفة المستخدمة حاليًا.

  • 🌱 ما هم: تحتوي متغيرات البيئة على قيم ديناميكية تؤثر على العمليات ويمكن إنشاؤها وتعديلها وحذفها.
  • 🧭 مسار: يسرد متغير PATH الدلائل التي يبحث فيها shell للعثور على الأوامر القابلة للتنفيذ وتشغيلها.
  • 🔎 قيم القراءة: يعرض الأمر echo متغيرًا واحدًا، بينما يسرد الأمران env و printenv جميع متغيرات البيئة.
  • 🆕 خلق: قم بتعيين قيمة باستخدام NAME=value، ثم استخدم export لجعلها متاحة للعمليات الفرعية.
  • 🗑️ حذف: يقوم الأمر unset بإزالة متغير وقيمته من جلسة shell الحالية.
  • 💾 إصرار: أضف أسطر التصدير إلى ~/.bashrc أو /etc/environment للاحتفاظ بالمتغيرات عبر الجلسات.
  • 🤖 مساعدة الذكاء الاصطناعي: يمكن للمساعدين الذين يعملون بالذكاء الاصطناعي وبرنامج GitHub Copilot مراجعة المتغيرات وإنشاء نصوص برمجية تستخدمها.

قائمة بمتغيرات البيئة الشائعة في لينكس ويونكس

تُعد المتغيرات البيئية من أولى الأمور التي يجدر فهمها في أي لينكس أو نظام يونكس، لأنها تتحكم بهدوء في كيفية عمل برامجك وواجهة الأوامر. يشرح هذا الدليل ماهيتها، وأكثرها شيوعًا، وكيفية قراءتها وإنشائها وحذفها.

ما هي بيئة الحوسبة؟

بيئة الحوسبة هي المنصة (المنصة = نظام التشغيل (+ المعالج) حيث يمكن للمستخدم تشغيل البرامج.

ما هو المتغير؟

في علم الحاسوب، المتغير هو موقع لتخزين قيمة ما، قد تكون اسم ملف، أو نصًا، أو رقمًا، أو أي بيانات أخرى. ويُشار إليه عادةً باسمه الرمزي الذي يُمنح له عند إنشائه. ويمكن بعد ذلك عرض القيمة المخزنة، وحذفها، وتعديلها، وإعادة حفظها.

تلعب المتغيرات دورًا هامًا في برمجة الحاسوب لأنها تُمكّن المبرمجين من كتابة برامج مرنة. ولأنها مرتبطة بنظام التشغيل الذي تعمل عليه، فمن المهم معرفة بعضها وكيفية التأثير عليها.

ما هي متغيرات البيئة؟

متغيرات البيئة هي قيم ديناميكية تؤثر على العمليات أو البرامج على الحاسوب. وهي موجودة في جميع أنظمة التشغيل، ولكن قد تختلف أنواعها. يمكن إنشاء متغيرات البيئة وتعديلها وحفظها وحذفها، وهي توفر معلومات حول سلوك النظام.

تُغيّر متغيرات البيئة طريقة عمل البرامج والتطبيقات. على سبيل المثال، يخزن متغير البيئة $LANG اللغة التي يفهمها المستخدم. يقرأ التطبيق هذه القيمة بحيث يُعرض للمستخدم الصيني واجهة باللغة الصينية (الماندرين)، بينما يُعرض للمستخدم الأمريكي واجهة باللغة الإنجليزية.

دعونا ندرس بعض المتغيرات البيئية الشائعة:

متغير الوصف
PATH يحتوي هذا المتغير على قائمة مفصولة بنقطتين رأسيتين (:) للمجلدات التي يبحث فيها نظامك عن الملفات القابلة للتنفيذ. عند إدخال أمر في سطر الأوامر، يبحث النظام عن الأمر في المجلدات المدرجة في متغير $PATH. إذا تم العثور على الأمر، يتم تنفيذه. وإلا، فإنه يُرجع خطأً "الأمر غير موجود".
USER اسم المستخدم
الصفحة الرئيسية المسار الافتراضي إلى الدليل الرئيسي للمستخدم
EDITOR مسار البرنامج الذي يقوم بتحرير محتوى الملفات
UID المعرف الفريد للمستخدم
مصطلح المحاكي الطرفي الافتراضي
SHELL شل المستخدمة من قبل المستخدم

الوصول إلى القيم المتغيرة

لتحديد قيمة متغير، استخدم الأمر echo:

echo $VARIABLE

على سبيل المثال، تُظهر لقطة الشاشة أدناه قيمة متغير PATH المعروضة باستخدام أمر echo.

عرض قيمة متغير PATH باستخدام أمر echo

يمكن قراءة أي متغير بيئي بنفس الطريقة. يوضح الناتج أدناه أن الأمر echo يُعيد قيمة متغير.

مخرجات أمر echo تُظهر قيمة متغير بيئي

تُعدّ المتغيرات حساسة لحالة الأحرف، لذا تأكد من كتابة اسم المتغير بأحرفه الصحيحة؛ وإلا فقد لا تحصل على النتيجة المرجوة. لعرض جميع متغيرات البيئة دفعة واحدة، استخدم الأمر env كما هو موضح أدناه.

يعرض الأمر env جميع متغيرات البيئة في الطرفية

تعيين متغيرات البيئة الجديدة

يمكنك إنشاء متغير خاص بك مُعرَّف من قِبل المستخدم باستخدام هذه الصيغة:

VARIABLE_NAME=variable_value

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

export VARIABLE_NAME=value

تُظهر لقطة الشاشة أدناه إنشاء متغير جديد ثم عرضه باستخدام الأمر echo.

إنشاء وعرض متغير بيئة جديد مُعرَّف من قِبل المستخدم

حذف المتغيرات

الصيغة التالية تزيل متغيرًا من النظام:

unset variablename

يؤدي هذا إلى إزالة المتغير وقيمته من جلسة shell الحالية، كما هو موضح أدناه.

إزالة متغير بيئي باستخدام الأمر unset

الأسئلة الشائعة

يوجد متغير الصدفة فقط في الصدفة الحالية ولا يُمرر إلى البرامج الأخرى. أما متغير البيئة فهو متغير صدفة تم تصديره، لذا ترثه العمليات الفرعية التي تبدأ من تلك الصدفة. استخدم الأمر export لترقية متغير.

تختفي المتغيرات المُعرّفة في الطرفية عند إغلاق الجلسة. للاحتفاظ بها، أضف سطر التصدير إلى ملف بدء التشغيل: ~/.bashrc أو ~/.profile لمستخدم واحد، أو /etc/environment لجميع المستخدمين على النظام. أعد تحميل الملف أو أعد فتح الطرفية لتطبيق التغييرات.

أضف المجلد الجديد إلى متغير PATH الحالي لتجنب استبداله: export PATH=$PATH:/your/new/directory. سيؤدي هذا إلى إضافة مجلدك إلى قائمة البحث التي يستخدمها النظام لتنفيذ الأوامر. ضع السطر نفسه في ملف ~/.bashrc لضمان استمرار التغيير في الجلسات الجديدة.

يعرض الأمر printenv متغيرات البيئة فقط، ويمكنه عرض متغير واحد فقط، مثل printenv HOME. كما يعرض الأمر env متغيرات البيئة، ويمكنه تشغيل برنامج ببيئة مُعدّلة. أما الأمر set فيعرض كل شيء، بما في ذلك متغيرات ووظائف الصدفة، وليس فقط المتغيرات المُصدّرة.

هذا يعني عادةً أنك استبدلت متغير PATH بدلاً من إضافته، لذا لم يعد بإمكان الصدفة العثور على الأوامر القياسية. احرص دائمًا على تضمين متغير PATH عند تعيينه. لاستعادة الوضع في الجلسة الحالية، شغّل الأمر export PATH=/usr/local/bin:/usr/bin:/bin، ثم أصلح ملف بدء التشغيل.

إنها طريقة مريحة ولكنها محفوفة بالمخاطر. يمكن قراءة متغيرات البيئة من /proc، وترثها العمليات الفرعية، وغالبًا ما تتسرب إلى سجلات النظام أو تقارير الأعطال. بالنسبة للأسرار الحساسة، يُفضل استخدام مدير أسرار مخصص أو ملف مشفر بصلاحيات مقيدة بدلاً من متغير عادي.

بإمكان مساعدي الذكاء الاصطناعي شرح وظيفة المتغيرات غير المألوفة، ومراجعة ملفات التكوين بحثًا عن الإدخالات المفقودة أو المكررة، وتحديد البيانات السرية التي تم الكشف عنها عن طريق الخطأ في المتغيرات. كما يمكن لأدوات التعلم الآلي مسح بيئات العمليات عبر العديد من الخوادم لاكتشاف التكوينات الخاطئة التي يصعب مراجعتها يدويًا.

نعم. مساعد الطيار جيثب يُمكنه إنشاء أوامر تصدير، وتعديلات على ملف ~/.bashrc، ونصوص برمجية تقرأ متغيرات مثل $HOME أو $PATH. يقترح الصيغة أثناء الكتابة، ولكن يُنصح بمراجعة أي كود يتعامل مع بيانات الاعتماد قبل تشغيله.

تلخيص هذه التدوينة بـ: