স্ক্রিপ্টগুলি অগত্যা একটি শেবাং থাকে না
স্ক্রিপ্ট ব্যাখ্যাকারী থেকে চালানো হয়েছে, তবে আপনি নিশ্চিত করুন যে এটি কুঁড়েঘর হয়েছে হতে পারে না এ সব । কোডটি চালানোর জন্য দোভাষীকে ফোন করলে , দোভাষী থেকে চালিত স্ক্রিপ্টগুলির শেবাং প্রয়োজন হয় না ।
উত্তরটি হ'ল না, কোনও কমান্ড নেই যা স্ক্রিপ্টটি চালানোর জন্য ভাষা (দোভাষী) কী তা নিশ্চিত করে খুঁজে বের করবে। তবে আপনি সর্বদা স্ক্রিপ্টের ভিতরে দেখতে পারেন এবং এটিতে শিবাং রয়েছে কিনা তা দেখতে পারেন।
সংক্ষেপে নিয়ম:
- আপনি যখন স্ক্রিপ্টটি চালান, দোভাষীকে সর্বদা কল করা সম্ভব শেবাংগুলিকে ছাড়িয়ে যায়, কার্যকর করা যায় বা না, শেবাং বা না or
- যদি এক্সিকিউটেবল না হয় এবং দোভাষী থেকে চালানো হয় তবে স্ক্রিপ্টটির কোনও শেবাং প্রয়োজন নেই।
- স্ক্রিপ্ট অনুবাদক প্রথম কলিং ছাড়াই চালানো হয়ে থাকে তবে এটি প্রয়োজন (এবং ব্যবহার করে) কি কলে অনুবাদক খুঁজে বের করতে কুঁড়েঘর, এবং এটা তার কুঁড়েঘর থেকে অনুবাদক ডাকতে "অনুমতি" আছে এক্সিকিউটেবল হতে হবে।
স্ক্রিপ্টের তবে শেবাং না থাকলে, কোন দোভাষী ব্যবহার করবেন তা জানানোর জন্য স্ক্রিপ্টের অভ্যন্তরে কোনও (প্রত্যক্ষ *) তথ্য নেই।
বলেছে
আপনি অবশ্যই সবসময় একটি মোড়কের স্ক্রিপ্ট লিখতে পারে চেষ্টা যদি স্ক্রিপ্ট কুঁড়েঘর হয়েছে পাওয়া ব্যাখ্যাকারী থেকে এটি চালানোর খুঁজে বের করতে এবং তা থেকে অনুবাদক পড়া, পরবর্তীকালে।
একটি উদাহরণ
#!/usr/bin/env python3
import subprocess
import sys
args = sys.argv[1:]; script = args[0]
try:
lang = open(script).readlines()[0].replace("#!", "").strip().split()[-1]
cmd = [lang, script]+args[1:]
subprocess.call(cmd)
except (PermissionError, FileNotFoundError, IndexError):
print("No valid shebang found")
এটা সংরক্ষণ tryrunমধ্যে $PATH(যেমন ~/bin, এটা করতে, ডিরেক্টরির যদি না বিদ্যমান, লগ আউট করে আবার পারে তা নিশ্চিত) এক্সিকিউটেবল । তারপরে চলছে:
tryrun /path/to/nonexecutablescript
আমার অ-এক্সিকিউটেবল pythonএবং bashস্ক্রিপ্টগুলিতে সঠিক দোভাষীকে (পরীক্ষিত) কল করুন ।
ব্যাখ্যা
- স্ক্রিপ্টটি কেবল স্ক্রিপ্টের প্রথম লাইনটি পড়ে, অপসারণ করে
#!এবং বাকীটি দোভাষীকে কল করতে ব্যবহার করে।
- যদি এটি কোনও বৈধ দোভাষীকে কল করতে ব্যর্থ হয় তবে এটি একটি
PermissionErrorবা একটি বাড়াবে FileNotFoundError।
বিঃদ্রঃ
এক্সটেনশন ( .sh, .pyইত্যাদি) লিনাক্স এর জন্য উপযুক্ত অনুবাদক নির্ধারণে কোনো ভূমিকা সবটা পালন করে।
(* কোড থেকে বাক্য গঠন নির্ধারণের জন্য অবশ্যই একটি "স্মার্ট" অনুমান-অ্যালগরিদম বিকাশ করা সম্ভব))