إصلاح: خطأ "مترجم غير صالح: لا يوجد مثل هذا الملف أو الدليل" في Linux

نشرت: 2023-05-01
شخص يكتب على لوحة المفاتيح الصغيرة Cherry KW 9200
هانا سترايكر / How-To Geek
إذا تلقيت خطأ "مترجم سيئ: لا يوجد مثل هذا الملف أو الدليل" عند تشغيل برنامج نصي shell ، فأنت بحاجة إلى تحويل ملف البرنامج النصي من Windows إلى نهايات أسطر Unix. تتمثل إحدى الطرق في استخدام الأمر dos2unix ، مثل هذا:

dos2unix script1.sh

هل حاولت تشغيل برنامج نصي Bash وحصلت على رسالة الخطأ "/ bin / bash ^ M: مترجم غير صالح: لا يوجد ملف أو دليل"؟ الإخراج ليس مفيدًا جدًا ويعطي الانطباع بأن النص الخاص بك مفقود. لحسن الحظ ، ليس هذا هو الحال ، والإصلاح بسيط للغاية.

جدول المحتويات

ما هو خطأ "المترجم السيئ: لا يوجد مثل هذا الملف أو الدليل"؟
كيفية إصلاح خطأ "مترجم غير صالح: لا يوجد مثل هذا الملف أو الدليل"
باستخدام الأمر dos2unix
باستخدام الأمر tr
استخدام الأمر sed
باستخدام vi أو vim
باستخدام جيني
باستخدام Kate أو Kwrite
باستخدام برنامج Notepad ++
باستخدام كود VS

ما هو خطأ "المترجم السيئ: لا يوجد مثل هذا الملف أو الدليل"؟

الحصول على رسالة خطأ تقرأ /bin/bash^M: bad interpreter: No such file or directory يعني فقط أن ملف البرنامج النصي شل الخاص بك يحتوي على نهايات سطر خاطئة - الأحرف الموضوعة في نهاية السطر تشير إلى أن الوقت قد حان للانتقال إلى السطر التالي. يحب Windows المنحدر من DOS مشاهدة "حرف إرجاع وتغذية السطر" (CRLF) ، تم تدوينه \r\n . في المقابل ، يستخدم Linux و macOS الحديث والأنظمة الأخرى المستندة إلى Unix فقط "تغذية خطية" (LF) أو \n .

إذا كنت ترى خطأ المترجم السيئ هذا ، فمن المحتمل أن تكون أنت أو الشخص الذي حصلت على النص منه قد كتبته في الأصل على جهاز كمبيوتر يعمل بنظام Windows. يرى Bash نهايات الأسطر هذه \r\n التي تم تعيينها بواسطة كمبيوتر Windows وينزعج لأنها تمنع shell من تفسير البرنامج النصي الخاص بك بشكل صحيح.

رسالة خطأ "مترجم سيئ: لا يوجد مثل هذا الملف أو الدليل" في سطر أوامر Linux.

يمكنك حتى تأكيد المشكلة في محطة Linux بتوجيه أمر file إلى البرنامج النصي الخاص بك.

 ملف script1.sh 

تحقق من نهايات سطر الملف باستخدام الأمر file في Linux.

إذا كان الملف يستخدم نهايات سطر DOS ، فسترى الرسالة "with CRLF line terminators" ملحقة بالمخرجات. لو كان نصنا يستخدم الأسطر الجديدة المناسبة لـ Unix (LF) ، فلن يذكر المصطلحين على الإطلاق. لحسن الحظ ، فإن العودة إلى أعمال LF أمر سهل.

كيفية إصلاح خطأ "مترجم غير صالح: لا يوجد مثل هذا الملف أو الدليل"

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

باستخدام الأمر dos2unix

يوجد برنامج سطر أوامر مصمم فقط لتحويل ملفات DOS (المعروفة أيضًا باسم Windows) إلى ملفات متوافقة تمامًا مع Unix تسمى dos2unix . إنه متوفر في معظم المستودعات الافتراضية ، لذا يمكنك تثبيته على Ubuntu باستخدام:

 sudo مناسب لتثبيت dos2unix

في تثبيت Fedora الخاص بنا ، تم تثبيت dos2unix مسبقًا ، ولكن يمكنك تأكيد أنه لديك من خلال:

 sudo dnf تثبيت dos2unix

على Arch Linux:

 sudo pacman -S dos2unix

استخدام dos2unix بسيط ؛ فقط أعطه اسم الملف الخاص بك.

 dos2unix script1.sh 

أدخل الأمر dos2unix.

تحقق منه file إذا كنت تريد التأكد من نجاح التحويل قبل تشغيل البرنامج النصي. يمكنك أيضًا التحويل الجماعي عن طريق تسمية ملفات متعددة مفصولة بمسافة فقط.

 dos2unix script1.sh script2.sh script3.sh

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

 البرنامج النصي dos2unix * .sh 

استخدم علامة النجمة في الأمر dos2unix للتحويل باستخدام حرف بدل.

يحتوي الأمر dos2unix على العديد من العلامات لمساعدتك في إجراء أنواع خاصة من التحويلات ، مثل تغيير ملكية الملف. يمكنك حتى استخدامه في شكل عكسي ، unix2dos ، إذا كنت تريد الرجوع إلى CRLF. أدخل dos2unix --help لمعرفة المزيد.

باستخدام الأمر tr

إذا كنت لا تستطيع أو لا ترغب في تثبيت أداة مساعدة مخصصة ، فإن Linux لديه أدوات مدمجة لتنظيف تلك الخطوط الجديدة. باستخدام الأمر tr ، يمكنك نزع \r جزء من نهايات السطر بحيث يتبقى لدينا \n نهايات.

 tr -d '\ r' <script1.sh> script1_unix.sh

هنا ، يأخذ tr نص ملف script1.sh ، ويحذف كل مثيل \r يعثر عليه ، ويحفظ الإخراج كملف script1_unix.sh .

استخدام الأمر sed

يمكن لأمر sed القوي المضمن في غلافك أيضًا تغيير نهايات السطر لملفك.

 sed -i 's / \ r //' script1.sh

إذا لم تكن معتادًا على بناء جملة sed ، فنحن نقول لـ sed تعديل ملفنا ( -i ) واستبدال ( s/ ) كل حرف إرجاع ( \r ) بلا شيء. هذا يتركنا مع أدوات إنهاء الأسطر المفضلة \n في Unix.

باستخدام vi أو vim

إذا كنت تستخدم vi أو vim لتحرير البرامج النصية الخاصة بك ، فما عليك سوى تمرير هذا الأمر لتحويل الملف المفتوح حاليًا إلى نهايات سطر Unix.

 : set fileformat = unix 

قم بتغيير تنسيق ملف البرنامج النصي باستخدام أمر vim.

ذات صلة: كيفية الخروج من محرر Vi أو Vim

باستخدام جيني

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

لتحويل نهايات الأسطر في Geany ، انتقل إلى Document> Set Line Endings> Convert and Set to LF (Unix).

في Geany ، ضمن قائمة Document ، انتقل إلى "Set Line Endings" واختر "Convert and Set to LF (Unix)".

احفظ البرنامج النصي وحاول تشغيله مرة أخرى.

باستخدام Kate أو Kwrite

إذا كنت تستخدم Kwrite لتحرير النص الخاص بك ، أو Kate ابنة Kwrite الأكثر قوة ، فيمكنك التحويل إلى تنسيق LF بالنقر فوق Tools> End of Line> Unix.

في Kwrite ، في قائمة Tools افتح "End of Line" وحدد "Unix".

احفظ الملف وقم بتشغيل البرنامج النصي الخاص بك مرة أخرى.

باستخدام برنامج Notepad ++

إذا قمت بتحرير التعليمات البرمجية في Notepad ++ ، فيمكنك أيضًا تحويل نهايات الأسطر بسهولة ، وهو أمر سهل الاستخدام لأنك على الأرجح تقوم بتشغيله على Windows (ما لم تكن قد قمت بتثبيت Notepad ++ لنظام التشغيل Linux) ويمكنك تحويلها قبل الانتقال إلى نظام Linux الخاص بك. بعد فتح الملف ، انتقل إلى تحرير> تحويل EOL> Unix (LF).

تأكد من حفظ البرنامج النصي الخاص بك قبل تشغيله.

إذا كنت تريد أن يقوم برنامج Notepad ++ بإنشاء ملفات بنهايات سطر Unix افتراضيًا ، فانتقل إلى الإعدادات> التفضيلات ، وحدد علامة التبويب "مستند جديد" ، وضمن خيارات "التنسيق (نهاية السطر)" انقر فوق زر الاختيار "Unix (LF)".

باستخدام كود VS

يعمل Visual Studio Code (VS Code) بنفس الطريقة إلى حد كبير ، إلا أنه من الأسهل العثور على مفتاح التبديل فقط. فقط انقر فوق "CRLF" في الركن الأيمن السفلي من نافذة VS Code.

يمكنك أيضًا تعيين VS Code لاستخدام نهايات سطر Unix افتراضيًا بالانتقال إلى ملف> تفضيلات> إعدادات وكتابة eol في شريط بحث الإعدادات. يجب أن تكون أعلى نتيجة قائمة منسدلة لإعداد "Eol". قم بتغييره إلى "\ n".

في إعدادات VS Code ، قم بتغيير إعداد EOL الافتراضي إلى "\ n".

ذات صلة: كيفية جعل أجهزة Bash Scripts مدركة