حرف E

رمز الخروج

Exit Code

آخر تحديث: 2026-10-12
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

تخيل أنك طلبت من مساعدك إحضار ملف من الغرفة المجاورة. عندما يعود، إما أن يعطيك إشارة بإبهامه للأعلى تعني أنه وجد الملف وجلبه بنجاح، أو يرفع أصابع يده ليخبرك برقم مشكلة معينة (مثلا رقم 1 يعني الباب مغلق، ورقم 2 يعني الملف غير موجود). في نظام لينكس، رمز الخروج (Exit Code) هو هذه الإشارة. كل أمر تكتبه في النظام يعيد رقما مخفيا بعد انتهائه. إذا كان الرقم صفرا، فهذا يعني أن الأمر نجح تماما. أما إذا كان الرقم أي شيء غير الصفر (من 1 إلى 255)، فهذا يعني حدوث خطأ، والرقم نفسه يساعدك في معرفة نوع الخطأ الذي حدث بالضبط لتتمكن من إصلاحه.

الشرح التقني المتقدم

في بيئات أنظمة التشغيل الشبيهة بيونكس (Unix-like)، يعتبر رمز الخروج (Exit Code) أو ما يُعرف أحياناً بحالة الخروج (Exit Status) وسيلة الاتصال الأساسية التي تستخدمها العمليات (Processes) لإبلاغ النظام الأب (Parent Process) بنتيجة تنفيذها. يعمل هذا النظام خلف الكواليس لضمان قدرة النصوص البرمجية (Shell Scripts) على اتخاذ قرارات منطقية بناءً على نجاح أو فشل الأوامر السابقة.

فهم القيم القياسية لرموز الخروج

يعتمد موجه الأوامر (Shell) على أرقام صحيحة تتراوح بين 0 و 255 لتمثيل حالة انتهاء العملية:

  • القيمة 0: تشير دائماً إلى النجاح (Success). نفذ الأمر المطلوب بدون أي أخطاء.
  • القيمة 1: تمثل الأخطاء العامة (General Errors)، مثل تمرير معاملات غير صالحة للأمر.
  • القيمة 2: تستخدم عادة لأخطاء سوء استخدام أوامر الصدفة (Shell Builtins).
  • القيمة 126: تعني أن الأمر موجود ولكن المستخدم يفتقر إلى صلاحيات التنفيذ (Execution Permissions).
  • القيمة 127: تعني أن الأمر غير موجود (Command Not Found) أو أن مسار (Path) البرنامج غير صحيح.
  • القيم من 128 إلى 255: تشير إلى أن العملية انتهت بسبب إشارة قاتلة (Fatal Signal)، وتحسب عادة بجمع 128 مع رقم الإشارة (على سبيل المثال، رمز 130 لإنهاء العملية بواسطة Ctrl+C).

كيفية التحقق من رمز الخروج العملي

تُخزن الصدفة مثل باش (Bash) رمز الخروج لآخر أمر تم تنفيذه في متغير خاص يحمل الرمز $?. للتحقق من حالة نجاح أو فشل أمر ما، يمكنك طباعة قيمة هذا المتغير فور انتهاء الأمر لمعرفة النتيجة:

echo $?

يمكن استغلال هذا المتغير برمجياً لتنفيذ سلسلة أوامر تعتمد على نجاح الأوامر السابقة باستخدام المعامل المنطقي AND (&&) أو OR (||):

mkdir new_folder && cd new_folder

في المثال السابق، لن يتم تنفيذ أمر تغيير المسار (Directory) إلا إذا كان رمز الخروج لإنشاء المجلد هو صفر (أي تمت العملية بنجاح).

أفضل الممارسات في كتابة السكريبتات

عند كتابة نصوص برمجية، من الضروري إدارة رموز الخروج بشكل صحيح لضمان استقرار النظام وموثوقية الأتمتة (Automation):

  • استخدم الأمر exit متبوعاً برقم مخصص (مثل exit 1) لإنهاء السكريبت عند اكتشاف خطأ برمجي وتمرير الفشل للعملية الأب.
  • اعتمد على الأمر set -e في بداية السكريبت لإيقاف التنفيذ تلقائياً إذا أعاد أي أمر رمز خروج يختلف عن الصفر.
  • وثّق الرموز المخصصة التي تستخدمها في نصوصك البرمجية لتسهيل عملية استكشاف الأخطاء وإصلاحها (Troubleshooting) مستقبلاً.

ملاحظة ختامية: الصورة الكبرى

يعد فهم رموز الخروج (Exit Codes) حجر الزاوية في بناء نصوص برمجية متينة وموثوقة في نظام لينكس (Linux). من خلال مراقبة هذه الرموز والتفاعل معها، يتحول موجه الأوامر من مجرد منفذ للتعليمات إلى أداة ذكية قادرة على التعامل مع الأخطاء وتصحيح مسار العمليات بشكل استباقي.

المصادر المعتمدة :