environ(7)

الاسم
environ - بيئة المستخدم

موجز
extern char **environ;

الوصف
المتغير environ يشير إلى مصفوفة من المؤشرات إلى سلاسل تُسمى "البيئة". المؤشر الأخير في هذه المصفوفة قيمته NULL. هذه المصفوفة من السلاسل تُتاح للعملية بواسطة استدعاء execve(2) عند بدء برنامج جديد. عندما تُنشأ عملية فرعية عبر fork(2)، ترث نسخة من بيئة العملية الأم.

حسب الاصطلاح، السلاسل في environ تكون بالشكل "name=value". الاسم حساس لحالة الأحرف ولا يجوز أن يحتوي على الحرف "=". القيمة يمكن أن تكون أي شيء يمكن تمثيله كسلسلة. الاسم والقيمة لا يجوز أن يحتويان على بايت فارغ مضمن ('\0')، لأن هذا يُفترض أنه ينهي السلسلة.

متغيرات البيئة يمكن وضعها في بيئة الصدفة بواسطة الأمر export في sh(1)، أو بواسطة الأمر setenv إذا كنت تستخدم csh(1).

البيئة الأولية للصدفة تُملأ بطرق متنوعة، مثل التعريفات من /etc/environment التي تُعالج بواسطة pam_env(8) لجميع المستخدمين عند وقت الدخول (على الأنظمة التي تستخدم pam(8)). بالإضافة إلى ذلك، نصوص تهيئة الصدفة المختلفة، مثل النص النظامي /etc/profile ونصوص التهيئة لكل مستخدم قد تتضمن أوامر تُضيف متغيرات إلى بيئة الصدفة؛ راجع صفحة الدليل الخاصة بالصدفة المفضلة لديك للتفاصيل.

صدفات نمط بورن تدعم الصياغة

    NAME=value command

لإنشاء تعريف متغير بيئة فقط في نطاق العملية التي تنفذ command. تعريفات متعددة للمتغيرات، مفصولة بمسافات بيضاء، قد تسبق command.

الوسائط قد تُوضع أيضًا في البيئة عند نقطة exec(3). برنامج C يمكنه التلاعب ببيئته باستخدام الدوال getenv(3)، putenv(3)، setenv(3)، و unsetenv(3).

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

USER
    اسم المستخدم المسجل الدخول (يُستخدم بواسطة بعض البرامج المشتقة من BSD). يُضبط عند وقت الدخول؛ راجع قسم NOTES أدناه.

LOGNAME
    اسم المستخدم المسجل الدخول (يُستخدم بواسطة بعض البرامج المشتقة من System-V). يُضبط عند وقت الدخول؛ راجع قسم NOTES أدناه.

HOME
    دليل الدخول للمستخدم. يُضبط عند وقت الدخول؛ راجع قسم NOTES أدناه.

LANG
    اسم لغة محلية لاستخدامها لفئات اللغة المحلية عندما لا تُلغى بواسطة LC_ALL أو متغيرات بيئة أكثر تحديدًا مثل LC_COLLATE، LC_CTYPE، LC_MESSAGES، LC_MONETARY، LC_NUMERIC، و LC_TIME (راجع locale(7) لمزيد من التفاصيل حول متغيرات البيئة LC_*).

PATH
    تسلسل بادئات الدليل التي يستخدمها sh(1) والعديد من البرامج الأخرى عند البحث عن ملف قابل للتنفيذ محدد كاسم ملف بسيط (أي، اسم مسار لا يحتوي على شرطات مائلة). البادئات مفصولة بنقطتين رأسيتين (:). قائمة البادئات تُبحث من البداية إلى النهاية، بفحص اسم المسار المُكون من ربط بادئة، شرطة مائلة، واسم الملف، حتى يُعثر على ملف بإذن تنفيذ.

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

    بشكل مشابه لـ PATH، لدينا CDPATH، يُستخدم بواسطة بعض الصدفات للعثور على هدف أمر تغيير الدليل، MANPATH يُستخدم بواسطة man(1) للعثور على صفحات الدليل، وهكذا.

PWD المسار المطلق لدليل العمل الحالي؛ مطلوب أن يكون قانونيًا جزئيًا (لا مكونات . أو ..).

SHELL
    اسم المسار المطلق لصدفة الدخول للمستخدم. يُضبط عند وقت الدخول، راجع قسم NOTES أدناه.

TERM
    نوع الطرفية الذي يُعد المخرجات له.

PAGER
    الأداة المفضلة للمستخدم لعرض ملفات النص. أي سلسلة مقبولة كمعامل سلسلة أوامر لأمر sh -c يجب أن تكون صالحة. إذا كان PAGER فارغًا أو غير مضبوط، فإن التطبيقات التي تُطلق أداة تصفح ستُفترض إلى برنامج مثل less(1) أو more(1).

EDITOR/VISUAL
    الأداة المفضلة للمستخدم لتحرير ملفات النص. أي سلسلة مقبولة كمعامل command_string لأمر sh -c تكون صالحة.

لاحظ أن سلوك العديد من البرامج وروتينات المكتبة يتأثر بوجود أو قيمة متغيرات بيئة معينة. تتضمن الأمثلة ما يلي:

•   المتغيرات LANG وLANGUAGE وNLSPATH وLOCPATH وLC_ALL وLC_MESSAGES وما إلى ذلك تؤثر على معالجة الإعدادات المحلية؛ انظر catopen(3) وgettext(3) وlocale(7).

•   TMPDIR يؤثر على بادئة المسار للأسماء المنشأة بواسطة tempnam(3) وروتينات أخرى، والدليل المؤقت المستخدم بواسطة sort(1) وبرامج أخرى.

•   LD_LIBRARY_PATH وLD_PRELOAD ومتغيرات LD_* الأخرى تؤثر على سلوك المحمل/الرابط الديناميكي. انظر أيضًا ld.so(8).

•   POSIXLY_CORRECT يجعل برامج معينة وروتينات مكتبة تتبع وصفات POSIX.

•   سلوك malloc(3) يتأثر بمتغيرات MALLOC_*.

•   المتغير HOSTALIASES يعطي اسم ملف يحتوي على أسماء مستعارة لاستخدامها مع gethostbyname(3).

•   TZ وTZDIR يعطيان معلومات المنطقة الزمنية المستخدمة بواسطة tzset(3) ومن خلالها بواسطة دوال مثل ctime(3) وlocaltime(3) وmktime(3) وstrftime(3). انظر أيضًا tzselect(8).

•   TERMCAP يعطي معلومات عن كيفية مخاطبة طرفية معينة (أو يعطي اسم ملف يحتوي على هذه المعلومات).

•   COLUMNS وLINES يخبران التطبيقات عن حجم النافذة، وربما يتجاوزان الحجم الفعلي.

•   PRINTER أو LPDEST قد يحددان الطابعة المرغوب استخدامها. انظر lpr(1).

ملاحظات
تاريخيًا ووفقًا للمعيار، يجب تعريف environ في برنامج المستخدم. ومع ذلك، كتسهيل (غير معياري) للمبرمج، يتم تعريف environ في ملف الرأس <unistd.h> إذا تم تعريف ماكرو اختبار الميزة _GNU_SOURCE (انظر feature_test_macros(7)).

عمليات prctl(2) PR_SET_MM_ENV_START وPR_SET_MM_ENV_END يمكن استخدامها للتحكم في موقع بيئة العملية.

المتغيرات HOME وLOGNAME وSHELL وUSER تُضبط عند تغيير المستخدم عبر واجهة إدارة جلسة، عادةً بواسطة برنامج مثل login(1) من قاعدة بيانات مستخدمين (مثل passwd(5)). (التبديل إلى المستخدم الجذر باستخدام su(1) قد ينتج عنه بيئة مختلطة حيث يتم الاحتفاظ بـ LOGNAME وUSER من المستخدم القديم؛ انظر صفحة دليل su(1).)

العلل
من الواضح أن هناك خطرًا أمنيًا هنا. العديد من أوامر النظام تم خداعها لإحداث أذى بواسطة مستخدم حدد قيمًا غير عادية لـ IFS أو LD_LIBRARY_PATH.

هناك أيضًا خطر تلويث مساحة الأسماء. برامج مثل make وautoconf تسمح بتجاوز أسماء الأدوات المبدئية من البيئة بمتغيرات ذات أسماء مماثلة بأحرف كبيرة. لذا يستخدم المرء CC لاختيار مترجم C المطلوب (وبالمثل MAKE وAR وAS وFC وLD وLEX وRM وYACC إلخ). ومع ذلك، في بعض الاستخدامات التقليدية، يعطي متغير البيئة هذا خيارات للبرنامج بدلاً من اسم مسار. لذا، لدينا MORE وLESS. يعتبر هذا الاستخدام خاطئًا، ويجب تجنبه في البرامج الجديدة.

انظر أيضًا
bash(1)، csh(1)، env(1)، login(1)، printenv(1)، sh(1)، su(1)، tcsh(1)، execve(2)، clearenv(3)، exec(3)، getenv(3)، putenv(3)، setenv(3)، unsetenv(3)، locale(7)، ld.so(8)، pam_env(8)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.