برمجياتقراءة دقيقتين

علامة tilde داخل علامات التنصيص في متغير PATH تضيف مسارًا نسبيًا يتغير مع كل مجلد

المغزى

المغزى: سطر إعداد منسوخ من إجابة قديمة يمكن أن يجعل الـ shell يبحث عن البرامج داخل أي مستودع يدخله المطوّر، دون أي رسالة خطأ تنبّه إلى ذلك.

نُشر في 2 أكتوبر 2026 مقال على مدونة disconnect3d.pl عن سطر شائع في ملفات إعداد الـ shell، ثم وصل إلى صدر Hacker News في 11 أكتوبر بـ 196 نقطة. والسطر هو:

export PATH=“$PATH:~/.local/bin/”

والمشكلة أن علامة الـ tilde لا تتحول إلى مسار مجلد المنزل حين تكون داخل علامات التنصيص. فتوثيق bash ينص على أن التوسيع يحدث للـ tilde غير المنصَّصة فقط، ومنها حالتها بعد النقطتين أو بعد علامة المساواة في إسناد المتغيرات. فبدل أن يُضاف المسار الحقيقي /home//.local/bin/ إلى PATH، يُضاف نص حرفي يشير إلى مجلد اسمه ~ داخل المجلد الحالي، أي مسار نسبي لا مطلق.

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

ويذكر الكاتب أن الصيغة بلا تنصيص تعمل فعلًا في bash وzsh، لكن الاعتماد عليها هش، لأن مسافة واحدة قد تكسر إسناد المتغير. ولذلك يصبح استعمال المتغير $HOME بدل الـ tilde هو الصيغة التي لا تعتمد على قواعد التوسيع.

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

المصادر

  1. المقال الأصلي على disconnect3d.pl
  2. توثيق bash عن توسيع الـ tilde
  3. النقاش على Hacker News
  4. مستودع nono على GitHub

من عدد الاثنين 1 جمادى الأولى - 12 أكتوبر

أخبار ذات صلة

أخبار الاثنين 1 جمادى الأولى - 12 أكتوبر