تخطَّ إلى المحتوى

١٢ يوليو ٢٠٢٦

حل خطأ command not found و is not recognized بالعربي

شارك المقال:

ثبّت Node.js بحماس، فتحت الطرفية، كتبت node -v... فردّت:

'node' is not recognized as an internal or external command,
operable program or batch file.

أو على ماك/لينكس:

bash: node: command not found

هذا الخطأ ليس عن Node تحديدًا — ستقابله مع npm وpython وgit وpip وكل أداة سطر أوامر. ومفتاح حله كله مفهوم واحد: PATH.

كيف تجد الطرفية الأوامر أصلًا؟

عندما تكتب node لا تفتش الطرفية جهازك كله — بل تمشي على قائمة مجلدات محددة اسمها PATH بالترتيب، وأول ملف تنفيذي بهذا الاسم تجده تشغّله. الاسم غير موجود بأي مجلد من القائمة؟ command not foundحتى لو كانت الأداة مثبتة في مكان آخر.

يعني الخطأ واحد من ثلاثة فقط:

الاحتمالالفحصالحل
غير مثبتة فعلًالا تجدها بمجلدات البرامجثبّتها
مثبتة خارج PATHموجودة لكن الطرفية عمياء عنهاأضف مجلدها لـ PATH
PATH تحدّث والطرفية قديمةثبّتت للتو والخطأ مستمرأعد فتح الطرفية

الحل خطوة بخطوة

1) أعد فتح الطرفية — جديًّا

الطرفية تقرأ PATH لحظة فتحها فقط. ثبّت أداة والنافذة مفتوحة؟ لن تراها أبدًا مهما أعدت المحاولة. أغلق كل النوافذ — وVS Code كاملًا إن كنت تستخدم طرفيته المدمجة — وافتح من جديد. يحل نصف الحالات وحده.

2) تأكد أنها مثبتة وأين

# ويندوز (PowerShell)
where.exe node
# ماك / لينكس
which node
  • طبع مسارًا: مثبتة والطرفية تراها — مشكلتك بمكان آخر (صدفة مختلفة؟).
  • لا شيء: إما غير مثبتة أو خارج PATH — أكمل.

3) ويندوز: أعد التثبيت مع خيار PATH

أسهل طريق على ويندوز: أعد تشغيل مثبّت الأداة، وتأكد من تفعيل الخيار الشهير:

[✓] Add to PATH

(مثبّتات Node وGit وPython كلها تعرضه — ومثبّت Python يجعله غير مفعّل افتراضيًا، وهذه أشهر مصيدة للمبتدئين على الإطلاق 🎯).

يدويًا إن لزم: ابحث بقائمة ابدأ عن "Edit the system environment variables" ← Environment Variables ← Path ← Edit ← New ← الصق مجلد الأداة (مثل C:\Program Files\nodejs\) ← موافق، ثم أعد فتح الطرفية.

4) ماك / لينكس: أضف المجلد لملف صدفتك

اعرف صدفتك (echo $SHELL) ثم أضف السطر لملفها:

# zsh (ماك الحديث) → ~/.zshrc · bash → ~/.bashrc
export PATH="$PATH:/المسار/إلى/مجلد/الأداة"

ثم أعد تحميلها: source ~/.zshrc أو افتح طرفية جديدة.

💡 وإن ظهر Permission denied بدل not found فالأداة موجودة لكن بلا إذن تنفيذ — قصة أخرى دليلها هنا.

5) حالة npm الخاصة: الحزم العالمية

npm install -g some-tool ثم some-tool: command not found؟ مجلد الحزم العالمية نفسه خارج PATH. اعرفه بـ:

npm config get prefix

وأضف <الناتج>/bin (لينكس/ماك) أو الناتج نفسه (ويندوز) إلى PATH بنفس خطوات الأعلى.

قائمة تحقّق سريعة

  • أغلق كل الطرفيات وVS Code وافتح من جديد — أولًا دائمًا.
  • where.exe / which — مثبتة أصلًا؟ وأين؟
  • ويندوز: أعد التثبيت مع ✓ Add to PATH (بايثون خصوصًا!).
  • ماك/لينكس: السطر في ملف صدفتك أنت (zshrc/bashrc).
  • أدوات npm العالمية: أضف npm config get prefix للقائمة.

الخلاصة

command not found لا يعني «الأداة غير موجودة» بل «الطرفية لا تعرف أين تبحث». افهم PATH مرة واحدة — قائمة مجلدات تُفتّش بالترتيب — وستحل هذا الخطأ لأي أداة قادمة في دقيقة: أعد فتح الطرفية، تحقق بـ which/where، وأضف المجلد الناقص.

رسّخ أساسيات الطرفية في مسار لينكس بالعربي، وأكمل أخطاء بيئة العمل مع حل أخطاء pip install و حل fatal: not a git repository.

📚 مصادر رسمية للتعمّق: صفحات دليل Linux الرسمية

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

ثبّت الأداة للتو والخطأ مستمر — لماذا؟

لأن الطرفية المفتوحة قرأت PATH لحظة فتحها ولا ترى أي تعديل حدث بعدها. أغلق كل نوافذ الطرفية (وأحيانًا VS Code كاملًا لأن طرفيته ترث بيئته) وافتحها من جديد — هذا وحده يحل نصف الحالات.

ما هو PATH بجملة واحدة؟

متغير بيئة يحوي قائمة مجلدات مفصولة؛ عندما تكتب أمرًا تفتش الطرفية هذه المجلدات بالترتيب عن ملف تنفيذي بهذا الاسم — فإن لم يوجد بأي منها ظهر command not found حتى لو كانت الأداة موجودة بمكان آخر في جهازك.

الأمر يعمل في طرفية ولا يعمل في أخرى (CMD يعمل وGit Bash لا)؟

لكل صدفة (shell) ملفات إعداد قد تعدّل PATH الخاص بها: bash يقرأ .bashrc وzsh يقرأ .zshrc وPowerShell له profile. أداة أضافت نفسها لملف صدفة واحدة ستعمل فيها فقط. تحقق أي صدفة تستخدم وأضف المسار في ملفها — أو استخدم التثبيت الرسمي الذي يضيف لـ PATH النظام كله.

اقرأ أيضًا

تصفّح كل المقالات في المدوّنة، أو ابدأ التعلّم من المسارات و خرائط الطريق.