سؤال كيفية إنشاء ملف (على سبيل المثال ، برنامج نصي .sh) قابل للتنفيذ ، بحيث يمكن تشغيله من المحطة الطرفية


لدي ملف script.sh ونوع هذا الملف هو ملف shellscript. أرغب في جعل هذا الملف كملف application / x-executable. كيف يمكنني جعلها؟


182
2017-12-16 12:27


الأصل


متعلق ب كيف يمكنني تشغيل ملفات .sh في المحطة الطرفية؟ - TuKsn
ممكن نسخة من كيف أقوم بتشغيل ملفات .sh؟ - karel
إنها ليست نسخة مكررة ، لأنني طلبت تحديدًا جعلها تطبيقًا / x-executable. السؤال الآخر يسأل فقط لفتح ملف ش في المحطة. - Ziyaddin Sadigov


الأجوبة:


حسنا يمكنك ان تجعلها تفعل عن طريق

chmod +x filename.sh

لذلك سوف تنفذ عند استدعاء أنها سوف

./filename.sh

ويمكنك الوصول إلى هذا البرنامج النصي كتطبيق أيضًا.

افتح الجهاز الخاص بك واكتب على النحو التالي من دليل منزلك.

gedit .bashrc

ثم في الملف المفتوح ، اكتب هذا في السطر الأخير.

alias <Name_with which you wanna call it >='./filename.sh'

حفظ وإغلاق.

ثم اكتب هذا في محطة الخاص بك source ~/.bashrc لتطبيق التغييرات التي قمت بها. ثم ببساطة اكتب الاسم الذي قدمته هناك بعد اسم مستعار للوصول إلى البرنامج النصي الخاص بك.

تأكد من أنك وضعت في الدليل الرئيسي.

آخر

alias <Name_with which you wanna call it >='./<path to your script >.sh'

امل ان يساعد.


244
2017-12-16 12:33



هل تعرف كيفية استخدام الأمر sudo بعد إدخال الأمر على النحو التالي: "alias command1 = '/ home / user_name/dir/script.sh". في العمل ، يعمل بدون sudo ، ولكن ليس به. - Aditya
تحتاج إلى إعادة تشغيل bash بعد تحرير. bashrc run: exec bash لإعادة bash. - Sampath Perera
لماذا يكون الملف القابل للتنفيذ ./filename.sh وليس فقط filename.sh؟ - user1993
@ user1993 نعم ، أنا أيضا تبحث عن وسيلة لجعلها قابلة للتنفيذ فقط من قبل filename و لا ./filename - MycrofD
@ user1993 بشكل عام ، باستخدام ./filename.sh يحدد ملف في الدليل الحالي وباستخدامه filename.sh يحدد ملف في الدليل الحالي أو أي دليل من PATH. الاستخدام الأول يزيل أي عدم يقين بشأن الملف الذي يتم الوصول إليه. في هذه الحالة ، تحاول تنفيذ البرنامج النصي مع bash أو مترجم آخر (بحكم الافتراض) #!/bin/bash كخط أول في البرنامج النصي الخاص بك) فقط عن طريق إدخال اسم الملف. يتطلب هذا الاستخدام تحديد الدليل. بدلا من ذلك ، يمكنك أن تجرب bash filename.sh والتي يبدو أنها تعمل مع دليل غير محدد. - a505999


هناك طريقتان لإنشاء ملف قابل للتنفيذ:

طريقة واجهة المستخدم الرسومية:

انتقل إلى علامة تبويب الأذونات ، ثم حدد المربع "تنفيذ: []" السماح بتنفيذ الملف كبرنامج.

enter image description here

طريقة المحطة الطرفية / القيادة:

يمكنك إما استخدام:

cd /to/my/required/directory

ثم اركض

chmod +x filename.extension

أو مجرد تشغيل:

chmod +x /path/to/your/filename.extension

chmod لديها أيضًا بعض الخيارات المتقدمة الأخرى:

تُظهر المساحات أنها مقسمة: - rwx --- ---

المجموعة الأولى من --- هو المستخدم. والثاني هو المجموعة والأخير هو الآخر (أي شخص آخر)

يقف r للقراءة ، w للكتابة و x لـ eXecute.

لذلك ، للسماح للجميع بقراءتها ، ولكن فقط المجموعة التي سيتم تنفيذها والمستخدم للقراءة والكتابة (ولكن لسبب ما لا يتم تنفيذها) ستكون:

-rw- rx- r-- ولكن هذا سيضاف إلى الأمر على النحو التالي:

chmod +rw-rx-r-- /path/to/file.extension

chmod يمكن أيضا القيام بذلك في الأرقام. ويستند إلى ثنائي (على ما أظن ، كما هو 1،2 و 4)

إذن هناك هذه الأرقام:

تنفيذ من قبل المستخدم هو 100. تنفيذ من قبل المجموعة هو 010. تنفيذ بواسطة الآخر هو 001

الكتابة من قبل المستخدم هو 200. اكتب من قبل المجموعة 020. اكتب من قبل الآخرين 002.

قراءة من قبل المستخدم هو 400. قراءة من قبل المجموعة 040. قراءة من جانب الآخر هو 004.

ثم قمت بإضافة هذه معا للحصول على التركيبة المطلوبة.

بحيث تسمح للجميع بقراءتها ، ولكن فقط المجموعة التي سيتم تنفيذها والمستخدم لكتابتها (ولكن لسبب ما لا يتم تنفيذها) ستكون:

400 + 040 + 004 و 010 و 200

الذي يضيف ما يصل إلى 600 + 050 + 004 = 654.

يمكنك بعد ذلك تشغيل الأمر.

chmod +654 /path/to/file.extension لتعيينه.

ولتعيين جميع الأذونات ، يمكنك كتابة:

chmod +rwxrwxrwx /path/to/file.extension

أو (هذا أسهل قليلاً للكتابة ، ولكن من الصعب تذكر كل واحد):

chmod +777 /path/to/file.extension

أخيرًا ، يمكنك القيام بما يلي:

chmod -777 /path/to/file.extension

لاتخاذ جميع الأذونات بعيدا عن الجميع.

و:

chmod +300 /path/to/file.extension

لإضافة القراءة والكتابة للمستخدم ، دون التأثير على أي أذونات أخرى (على سبيل المثال ، أذونات التنفيذ).

هذا الموقع يحتوي على خانة اختيار صغيرة جدًا مفيدة للشبكة ، حيث يمكنك تحديد الخيارات التي تريدها وتعطيك الأمر:

enter image description here

ومع ذلك ، ليس كل التوليفات الممكنة معقولة للاستخدام. الرئيسية التي يتم استخدامها هي التالية:

755 - Owner لديه كل شيء ، و Group و Other يمكن قراءة وتنفيذ

700 - Owner لديه كل شيء

644 - Owner يمكن القراءة والكتابة ، و Group و Otherيمكن قراءة

600 - Owner يمكن القراءة والكتابة

وإذا كنت تستخدم مجموعات مستخدمين غير تافهة:

775 - Owner يمكن القراءة والكتابة ، و Group و Otherيمكن قراءة

770 - Owner و Group لديك كل شيء ، و Other يمكن قراءة وتنفيذ

750 - Owner لديه كل شيء ، و Group يمكن قراءة وتنفيذ

664 - Owner و Group يمكن القراءة والكتابة ، و Other يمكن قراءة فقط

660 - Owner و Group يمكن القراءة والكتابة

640 - Owner يمكن القراءة والكتابة ، و Groupيمكن قراءة

ونادرًا ما يتم استخدام 777 و 666 ، إلا في / tmp.

شكر إلاماري كارونين إلى عن على مشيرا هم في الاستعمال الشائع!


31
2018-06-18 12:22



ألا يستند على الثماني (8-القاعدة) بدلاً من ثنائي (2-based)؟ في الثنائي ، يمكنك الحصول على 0 و 1 فقط ، بينما يمكن أن يكون لديك 0 و 1 و ... 6 و 7 - Justinas
Justinas ثنائي في ذلك 7 = 4 + 2 + 1 - 111 يمثل القراءة والكتابة والتنفيذ. - Tim


يركض:

chmod +x /path/to/file.sh

لجعلها غير قابلة للتنفيذ ، قم بتشغيل:

chmod -x /path/to/file.sh

على سبيل المثال أنا خلقت .sh ملف:

vi tester12.sh

بعد أن أكتب بعض التعليمات البرمجية على محرر vi ، سأخرج من محرر vi:

:wq!
chmod +x tester12.sh
./tester12.sh

7
2018-06-18 12:39