سؤال لا يمكن استخدام "./" لتنفيذ برنامج نصي shell


ربما شخص ما هنا سيكون قادرا على مساعدتي. لقد قمت بتثبيت Ubuntu 12.04 LTS (kubuntu) على جهازين. تتطابق ملفات .bashrc و .bash_profile لأن بنيات الملف على كل جهاز هي نفسها.

على الجهاز 1 أقوم بتشغيل البرامج النصية bash داخل إطار طرفية مع بسيطة: ./scriptname.sh

على الجهاز 2 ، لا يمكنني القيام بذلك ويجب استخدام: sh scriptname.sh ولا يمكنني استخدام ./ وتبويب إكمال اسم ملف البرنامج النصي.

يتم تعيين كافة البتات القابلة للتنفيذ بشكل صحيح ، جميع الملفات والمجلدات لديها الأذونات الصحيحة. في رأس البرامج النصية يتم تعيين shebang بشكل صحيح.

أي أفكار لماذا يحدث هذا؟

في صحتك


4
2017-11-05 01:23


الأصل


كما سألت عن يونكس و لينكس و ستاكوفيرفلوو - glenn jackman
هل هذا الجذر أو مستخدم غير الجذر؟ هل echo $SHELL على كلا الجهازين تأكيد أن قذيفة هو باش؟ - Lars Rohrbach
مستخدم غير أساسي ، صدى $ SHELL / bin / bash على كلا الجهازين - adeliefan


الأجوبة:


الشيء الوحيد الذي من شأنه أن يسبب هذا هو إذا كان البرنامج النصي غير قابل للتنفيذ. أعلم أنك قلت أنه تم تعيين البت التنفيذي ، ولكن تأكد من:

chmod +x scriptname.sh

2
2017-11-05 02:07



كلا - من المؤكد أن حقه. أعتقد أنه يجب أن يكون هناك خطأ ما في إعدادي البيئي (.bashrc أو .bash_profile) ولكن لا أستطيع رؤية المكان الذي تم فيه الاستيلاء عليه. - adeliefan


لقد قرأت العديد من المشكلات الناشئة عن الإكمال التلقائي ، وليس بالضرورة مع الإصدار 12.04 ، ويبدو أن الخيارين التاليين يستحقان التجربة:

أول محاولة تعطيل باش للبرمجة الانتهاء: تعليق التدريجي من هذه الخطوط الثلاثة في كليهما /etc/bash.bashrc وفي المستخدم $HOME/.bashrc:

 if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
     . /etc/bash_completion
 fi

قد تجد أن هذه الخطوط قد تم التعليق عليها بالفعل # في المقدمة ، وفي هذه الحالة اتركها كما هي.

لذا ثانيا ، حاول إعادة تثبيت bash-completion:

sudo apt-get purge bash-completion
sudo mv /etc/bash_completion.d /etc/bash_completion.d.bak
sudo apt-get install bash-completion

1
2017-11-05 02:13



شكرا للاقتراح لارس ، لم تحدث فرقا رغم ذلك. - adeliefan
حسنا يا رتق أفترض أنك أعدت تسجيل الدخول بعد إجراء ذلك؟ - Lars Rohrbach


قد يكون سبب الأخطاء التي تشاهدها محاولة تشغيل ملف قابل للتنفيذ على وسائط محمّلة بخاصية "noexe". اكتب mount ، وفحص خصائص الجهاز الذي يحتوي على البرنامج النصي. قم بتغيير / etc / fstab خصائص جبل إذا لزم الأمر.


1
2017-11-05 05:59