سؤال

تنشأ بعض المشكلة عند تحديد مصادر أحد ملف ENV الخاص بك (سلسلة من التصدير المتغير)

على سبيل المثال:

...
export MY_ROOT=/Soft/dev/blah/blah
export MY_BIN=${MY_ROOT}/bin
...

النتائج في

$. my_env.sh
$echo $MY_BIN
/bint/dev/blah/blah

=> "/ BIN" يبدو الكتابة فوق بداية المتغير بدلا من اللقاءات ..

اي فكرة؟

بالمناسبة في كل مرة نستخدم فيها هذا الملف، يتم الإبلاغ عن رسالة خطأ:

": Command not found"

وهو غريب .. تظهر هذه الرسالة على الرغم من أننا نعلق المحتوى الكامل.

تم استدعاء قذيفة في البداية تبدو جيدة #!/bin/sh, ، أو #!/bin/bash.

ماذا عن تحكم الشخصيات؟ كيفية فحصها على لينكس؟

هل كانت مفيدة؟

المحلول

سيؤدي هذا إلى إصلاح النهايات في الملف:

dos2unix my_env.sh

ليست هناك حاجة إلى Shebang في ملف سيكون مصدره فقط لأنه يعمل في Shell الحالي على أي حال. ومع ذلك، كتعليق قد يكون مفيدا لقراء البشر.

نصائح أخرى

": غير موجود الأمر" هو الخطأ الذي رأيته عندما تم التعامل مع برنامج نصي UNIX / Linux Shell (mis-) بواسطة نظام MS Windows. على سبيل المثال، إذا تم فحصها باستخدام Webcvs، تم تعديلها باستخدام المفكرة أو الدفتر، ثم إعادة تقديمها.

(يشكو من أنه لا يمكنه العثور على [CTRL-M] القابل للتنفيذ --- وهو أمر صالح للغاية، على الرغم من أن اسم ملف مشبوه للغاية وغير مريح إلى حد ما ل UNIX / Linux).

قم بتشغيل الملف من خلال GNU cat -A أو ال od -x أو hexdump أوامر لرؤية هذه (وتحقق من تشخيصي ... أو تشغيله tr -d مع الوقاؤة المناسبة وقذيفة "Verbatim" التعامل مع نظامك. (علي سبيل المثال tr -d '[Ctrl-V],[Ctrl-M]' تحت باش على نظام لينكس النموذجي).

اعتمادا على نسختك من tr قد تكون قادرا على استخدام: tr -d '\r' أو tr -d \015 (015 هو Octal for CR، "عودة النقل" أو ^ m --- MS-DOS المستخدمة لاستخدام أزواج CR / LF كإنهاء خط، وهو واحد فقط من الأسباب العديدة التي يمكن أن تعفن MS-DOS في الهاوية المتفجرة عندما يتعلق الأمر بقدرة التشغيل البيني. لا يسبب اهتمام الأسطر من الأحرف الفردية أي مشاكل حقيقية لأي شخص آخر ... ولكن الأزواج تسبب مشاكل تحويل حقيقية عندما تستخدم كل شيء آخر في تاريخ الحوسبة السائدة الأحرف الفردية لهذا).

آه أجل، vim لديه مفيد set ff (الملقب ب set fileformat الخيار الذي يمكنه التعامل مع اتفاقية إنهاء UNIX و MacOS و MS-DOS من أي نسخة من vim بغض النظر عن أي منصة أنت على. يبدو أنني أذكر vim الافتراضي هو الكشف عن أنواع الإنهاء السطر الذي يستخدمه ملف وتركه دون تغيير (وإعادة التقصيع إلى الأصل من النظام الأساسي لأي ملفات جديدة، بالطبع).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top