ENVIRONMENT.D(5)

الاسم
environment.d - تعريف بيئة خدمة المستخدم

موجز

    ~/.config/environment.d/*.conf
    /etc/environment.d/*.conf
    /run/environment.d/*.conf
    /usr/local/lib/environment.d/*.conf
    /usr/lib/environment.d/*.conf
    /etc/environment

الوصف

ملفات الضبط في أدلة environment.d/ تحتوي على قوائم من المهام المتغيرة للبيئة التي يتم تمريرها إلى الخدمات التي بدأها النظام مثيل المستخدم. systemd-environment-d-generator(8) تحليلها و تحديث البيئة المصدرة من قبل مثيل المستخدم النظامي. انظر أدناه لمناقشة العمليات التي ترث تلك المتغيرات.

يوصى باستخدام بادئات رقمية لأسماء الملفات لتبسيط الترتيب.

للتوافق مع الإصدارات السابقة، يتم تثبيت رابط رمزي إلى /etc/environment، لذلك يتم تحليل هذا الملف أيضًا.

أدلة الضبط والأسبقية

تُقرأ ملفات الضبط من المجلدات في /etc/، و /run/، و /usr/local/lib/، و /usr/lib/، بترتيب الأسبقية، كما هو مدرج في قسم الموجز أعلاه. يجب أن تحمل الملفات الامتداد ".conf". تتجاوز الملفات في /etc/ الملفات التي تحمل الاسم نفسه في /run/، و /usr/local/lib/، و /usr/lib/. وتتجاوز الملفات في /run/ الملفات التي تحمل الاسم نفسه تحت /usr/.

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

ينبغي أن تثبّت الحزم ملفات إعداداتها في /usr/lib/ (حزم التوزيعة) أو /usr/local/lib/ (التثبيتات المحلية) [1]. الملفات في /etc/ محجوزة للمدير المحلي، الذي قد يستخدم هذا المنطق لتجاوز ملفات الإعداد التي ثبتتها حزم الموردين.

يوصى ببدء جميع أسماء الملفات برقم من خانتين وشرطة لتبسيط الترتيب. يوصى باستخدام النطاق 10-40 لملفات الضبط في /usr/ والنطاق 60-90 لملفات الضبط في /etc/ و /run/، للتأكد من أن ملفات الضبط المحلية والعابرة ستكون لها الأولوية دائماً على ملفات الضبط التي يشحنها مورد نظام التشغيل.

إذا أراد المدير تعطيل ملف تهيئة يوفره المورد، فإن الطريقة الموصى بها هي وضع وصلة رمزية إلى /dev/null في مجلد التهيئة في /etc/، بنفس اسم ملف تهيئة المورد. وإذا كان ملف تهيئة المورد مضمناً في صورة initrd، فيجب إعادة توليد الصورة.

تنسيق الضبط

تحتوي ملفات التهيئة على قائمة من تعيينات متغيرات البيئة "KEY=VALUE"، مفصولة بأسطر جديدة. قد يشير الجانب الأيمن من هذه التعيينات إلى متغيرات بيئة مُعرَّفة سابقًا، باستخدام تنسيق "${OTHER_KEY}" و "$OTHER_KEY". من الممكن أيضًا استخدام "${FOO:-DEFAULT_VALUE}" للتوسع بنفس طريقة "${FOO}" ما لم يكن التوسع فارغًا، وفي هذه الحالة يتوسع إلى DEFAULT_VALUE، واستخدام "${FOO:+ALTERNATE_VALUE}" للتوسع إلى ALTERNATE_VALUE طالما أن "${FOO}" كان سيتوسع إلى قيمة غير فارغة. يمكنك الهروب من علامة الدولار الحرفية "$" بمضاعفتها، كما في "$$".

يعمل حرف الخط المائل العكسي "\" المتبوع بسطر جديد كاستمرار للسطر (يُتخلص من كلا الحرفين)؛ في جميع الحالات الأخرى، يُستهلك الخط المائل العكسي ويُدرج الحرف التالي حرفيًا في القيمة. يمكن استخدام هذا للحفاظ على المسافات البيضاء البادئة/اللاحقة أو تضمين خطوط مائلة عكسية حرفية.

يمكنك اختياريًا إحاطة الجانب الأيمن من التعيينات بأزواج إما من 'الاقتباسات المفردة' أو "الاقتباسات المزدوجة"؛ ستُزال هذه من القيمة قبل حفظها. لا يؤثر استخدام أي من نمطي الاقتباس على توسع المتغير؛ ومع ذلك، تعطل الاقتباسات المفردة هروب الخط المائل العكسي تمامًا، بينما تزيل الاقتباسات المزدوجة الخطوط المائلة العكسية التي تسبق الاقتباسات المزدوجة """"، وعلامات الدولار "$"، والخطوط المائلة العكسية "\"، وعلامات الاقتباس الخلفية "`"، والأسطر الجديدة، وتترك جميع الخطوط المائلة العكسية الأخرى في مكانها.

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

يجب أن يكون كل KEY اسم متغير صالحًا. تُتجاهل الأسطر الفارغة والأسطر التي تبدأ بأحرف التعليق "#" أو ";". لا تُدعم أي عناصر أخرى من بناء جملة الصدفة.

  أمثلة

مثال 1. إعداد البيئة للسماح بالوصول إلى برنامج مثبت في /opt/foo

/etc/environment.d/60-foo.conf:

    FOO_DEBUG=force-software-gl,log-verbose
    PATH=/opt/foo/bin:$PATH
    LD_LIBRARY_PATH=/opt/foo/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
    XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}

مثال 2. الهروب وتوسع المتغير

/etc/environment.d/70-bar.conf:

    # A comment
    test_var=(variable)
    ; Another comment
    test_comment=value # This is a part of the variable, and not a comment!

    test_none= \ before\
    after "" '' \${test_var}
    test_double=" \ before\
    after "" '' \${test_var}"
    test_single=' \ before\
    after "" '' \${test_var}'

    # The above example produces the following environment variables, written using
    # C-style string escapes:
    #
    # test_var="(variable)"
    # test_comment="value # This is a part of the variable, and not a comment!"
    # test_none=" beforeafter \"\" '' (variable)"
    # test_double=" \\ beforeafter  '' (variable)"
    # test_single=" \\ before\\\nafter \"\"  \\(variable)"

قابلية التطبيق

متغيرات البيئة التي يصدرها مدير خدمة المستخدم (مثيل systemd --user الذي يبدأ في خدمة النظام user@uid.service) تُمرر إلى أي خدمات يبدأها ذلك المدير. على وجه الخصوص، قد يشمل ذلك الخدمات التي تشغل أصداف المستخدم. على سبيل المثال في بيئة GNOME، يعمل محاكي الطرفية الرسومي كوحدة مستخدم gnome-terminal-server.service، والتي بدورها تشغل صدفة المستخدم، لذا سترث تلك الصدفة متغيرات البيئة التي يصدرها مدير المستخدم. بالنسبة لمثيلات أخرى من الصدفة، التي لم تطلقها خدمة مدير المستخدم، يتم تعريف البيئة التي ترثها بواسطة البرنامج الذي يبدأها. تلميح: بشكل عام، وحدات systemd.service(5) تحتوي على برامج تطلقها systemd، ووحدات systemd.scope(5) تحتوي على برامج تطلقها شيء آخر.

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

على وجه التحديد، لتسجيلات الدخول عبر ssh، تقوم خدمة sshd(8) ببناء بيئة تجمع بين المتغيرات المرسلة من النظام البعيد والمحددة بواسطة sshd، انظر المناقشة في ssh(1). جلسة العرض الرسومي سيكون لها آلية مماثلة لتعريف البيئة. لاحظ أن بعض المديرين يستعلمون مثيل المستخدم systemd عن البيئة المصدرة ويحقنون هذه التهيئة في البرامج التي يبدأونها، باستخدام systemctl show-environment أو استدعاء D-Bus الأساسي.

انظر أيضًا

systemd(1), systemd-environment-d-generator(8), systemd.environment-generator(7)

ملاحظات

1.  💣💥🧨💥💥💣 يرجى ملاحظة أن ملفات الضبط تلك يجب أن تكون متوفرة في جميع الأوقات. إذا كان /usr/local/ قسماً منفصلاً، فقد لا يكون متوفراً أثناء بدء التشغيل المبكر، ويجب عدم استخدامه للضبط.

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

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

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