ইন bash
বা sh
, আমি যা কিছু দিয়ে শুরু হয় অনুমান #
একটি হল মন্তব্য ।
তবে bash
স্ক্রিপ্টগুলিতে আমরা লিখি:
#!/bin/bash
পাইথন স্ক্রিপ্টগুলিতে রয়েছে:
#!/bin/python
এর অর্থ কি এই যে #
নিজেই একটি মন্তব্য, যেখানে #!
নেই?
ইন bash
বা sh
, আমি যা কিছু দিয়ে শুরু হয় অনুমান #
একটি হল মন্তব্য ।
তবে bash
স্ক্রিপ্টগুলিতে আমরা লিখি:
#!/bin/bash
পাইথন স্ক্রিপ্টগুলিতে রয়েছে:
#!/bin/python
এর অর্থ কি এই যে #
নিজেই একটি মন্তব্য, যেখানে #!
নেই?
উত্তর:
#!
লাইন ব্যবহার করা হয় আগে স্ক্রিপ্টটি রান করা হয়, তাহলে উপেক্ষিত যখন স্ক্রিপ্ট চালানো হয়।আপনি জিজ্ঞাসা করছেন শেবাং লাইন এবং একটি সাধারণ মন্তব্যের মধ্যে পার্থক্য কী ।
শুরু হওয়া একটি লাইন #!
অন্য যে কোনও লাইনের সাথে শুরু হওয়া ঠিক তেমনই একটি মন্তব্য #
। এটি সত্য যদি #!
ফাইলের প্রথম লাইন হয় বা অন্য কোথাও। #!/bin/sh
এর একটি প্রভাব আছে , তবে এটি দোভাষী দ্বারা নিজেই পড়া হয় না ।
#
সমস্ত প্রোগ্রামিং ল্যাঙ্গুয়েজে কোনও মন্তব্য নয় তবে, আপনি জানেন, এটি বোর্ন-স্টাইলের শেল sh
এবং bash
(পাশাপাশি বেশিরভাগ নন-বোর্ন-স্টাইলের শেলগুলি, যেমন csh
) এর মধ্যে একটি মন্তব্য । এটি পাইথনের একটি মন্তব্যও । এবং এটি বিভিন্ন ধরণের কনফিগারেশন ফাইলের একটি মন্তব্য যা সত্যই স্ক্রিপ্ট (মোটেও /etc/fstab
) নয়।
ধরা যাক একটি শেল স্ক্রিপ্ট শুরু হয় #!/bin/sh
। এটি একটি মন্তব্য, এবং দোভাষী (শেল) #
চরিত্রের পরে লাইনের সমস্ত কিছু উপেক্ষা করে ।
একটি #!
লাইনের উদ্দেশ্য দোভাষীকে তথ্য না দেওয়া। #!
লাইনটির উদ্দেশ্য অপারেটিং সিস্টেমকে (বা যে কোনও প্রক্রিয়া দোভাষীকে চালু করে) দোভাষী হিসাবে কী ব্যবহার করবেন তা বলা ।
আপনি যদি স্ক্রিপ্টটিকে একটি এক্সিকিউটেবল ফাইল হিসাবে আহ্বান করেন, উদাহরণস্বরূপ, রান করে ./script.sh
, সিস্টেমটি প্রথম লাইনটি শুরু হয় কিনা তা শুরুর #!
পরে শূণ্য বা আরও বেশি স্পেস দিয়ে শুরু করে তা একটি কমান্ড অনুসরণ করে see যদি এটি হয়, এটি স্ক্রিপ্টটির নাম হিসাবে এটিটিকে আর্গুমেন্ট হিসাবে চালায়। এই উদাহরণে এটি চলে /bin/sh script.sh
(বা, প্রযুক্তিগতভাবে /bin/sh ./script.sh
)।
আপনি যদি স্পষ্টভাবে দোভাষীকে কল করে স্ক্রিপ্টটি প্রার্থনা করেন তবে এই #!
লাইনটি কখনও পরামর্শ করা হয় না। সুতরাং, আপনি যদি চালনা করেন sh script.sh
তবে প্রথম লাইনের কোনও প্রভাব নেই। যদি script2.sh
প্রথম লাইনটি হয় তবে #!/usr/games/nibbles
রানিং sh script2.sh
স্ক্রিপ্টটি খোলার চেষ্টা করবে না nibbles
(তবে ./script2.sh
হবে)।
আপনি লক্ষ্য করবেন যে স্ক্রিপ্টের এক্সটেনশন ( .sh
) এর কোনও ক্ষেত্রেই এটির নেই , যদি এটি থাকে তবে এটি কীভাবে চালানো হয় তা প্রভাবিত করে। ইউনিক্সের মতো সিস্টেমে এটি স্ক্রিপ্টটি কীভাবে চালিত হয় তা সাধারণভাবে প্রভাবিত করে না। উইন্ডোজ এর মতো কিছু অন্যান্য সিস্টেমে #!
শেবাং লাইনটি সিস্টেম দ্বারা সম্পূর্ণ উপেক্ষা করা যেতে পারে এবং এক্সটেনশনটি নির্ধারণ করতে পারে স্ক্রিপ্টগুলি কী চালায়। (এর অর্থ এই নয় যে আপনাকে আপনার স্ক্রিপ্টগুলির এক্সটেনশান দেওয়ার দরকার আছে, তবে এটি যদি করা হয় তবে সেগুলি সঠিক হওয়া উচিত এটির অন্যতম কারণ))
#!
এই উদ্দেশ্যটি সঠিকভাবে পরিবেশন করতে বেছে নেওয়া হয়েছিল কারণ #
একটি মন্তব্য শুরু হয় begins #!
লাইন সিস্টেম, না দোভাষীর জন্য, এবং এটা অনুবাদক দ্বারা উপেক্ষিত হবে।
আপনি (মূলত) বলেছেন আপনি স্ক্রিপ্টগুলির #!/bin/sh
জন্য ব্যবহার করেন bash
। আপনার কেবল তখনই করা উচিত যদি স্ক্রিপ্টটির bash
কোনওরকম এক্সটেনশনের sh
প্রয়োজন না হয় - স্ক্রিপ্টটি চালাতে সক্ষম হওয়া দরকার। sh
সর্বদা একটি syMLink হয় না bash
। প্রায়শই সমস্ত রিমোট দূরবর্তী সাম্প্রতিক ডেবিয়ান এবং উবুন্টু সিস্টেমে অন্তর্ভুক্ত , sh
এটির একটি সিমিলিংক dash
।
আপনি এটি দিয়েছিলেন (আপনার প্রশ্নের প্রথম সংস্করণে, সম্পাদনার আগে) যেটি দিয়ে আপনি আপনার পাইথন স্ক্রিপ্টগুলি শুরু করেন #!/bin/sh read by the interpretor
। যদি আপনি এটি আক্ষরিক অর্থে বোঝাতে চান তবে আপনার অবশ্যই এটি করা বন্ধ করা উচিত। যদি hello.py
সেই লাইন দিয়ে শুরু হয়, চালানো কার্যকর হয় ./hello.py
:
/bin/sh read by the interpretor hello.py
/bin/sh
read
( by the interpretor hello.py
এর আর্গুমেন্ট হিসাবে) নামে একটি স্ক্রিপ্ট কার্যকর করার চেষ্টা read
করবে, (আশাবাদী) খুঁজে পাওয়া যাবে না এবং পাইথন দোভাষী দ্বারা আপনার পাইথন স্ক্রিপ্টটি আর দেখা যাবে না।
আপনি যদি এই ভুলটি করছেন তবে আমার বর্ণনা করা সমস্যা না থাকলে আপনি সম্ভবত আপনার পাইথন স্ক্রিপ্টগুলিকে স্পষ্টভাবে দোভাষী (উদাহরণস্বরূপ python hello.py
) নির্দিষ্ট করে অনুরোধ করছেন , যার ফলে প্রথম লাইন উপেক্ষা করা হবে। আপনি যখন অন্যদের কাছে আপনার স্ক্রিপ্টগুলি বিতরণ করেন বা সেগুলি দীর্ঘ সময় ব্যবহার করেন, তখন এটি স্পষ্ট হতে পারে না যে তাদের কাজ করার জন্য এটি প্রয়োজনীয়। এগুলি এখনই ঠিক করা ভাল। বা কমপক্ষে প্রথম লাইনটি পুরোপুরি সরিয়ে ফেলুন, যাতে ./
ত্রুটি বার্তাটি চালাতে ব্যর্থ হলে তা বোঝা যায়।
পাইথন স্ক্রিপ্টগুলির জন্য, আপনি যদি জানেন যে পাইথন ইন্টারপ্রেটার কোথায় (বা হতে চলেছে) তবে আপনি #!
একইভাবে লাইনটি লিখতে পারেন :
#!/usr/bin/python
অথবা এটি যদি পাইথন 3 স্ক্রিপ্ট হয় তবে আপনার উল্লেখ করা উচিত python3
, যেহেতু python
প্রায় সর্বদা পাইথন 2 :
#!/usr/bin/python3
তবে, সমস্যাটি হ'ল /bin/sh
সর্বদা উপস্থিত থাকার কথা, এবং ওএসের সাথে /bin/bash
উপস্থিত সিস্টেমগুলিতে প্রায় সর্বদা উপস্থিত থাকে bash
, পাইথন বিভিন্ন স্থানে থাকতে পারে।
অতএব, অনেক পাইথন প্রোগ্রামার পরিবর্তে এটি ব্যবহার করে:
#!/usr/bin/env python
(বা #!/usr/bin/env python3
পাইথন 3 এর জন্য)
এটি স্ক্রিপ্টটি env
সঠিক জায়গায় থাকার পরিবর্তে "সঠিক জায়গায়" python
থাকার উপর নির্ভর করে । এটি একটি ভাল জিনিস, কারণ:
env
প্রায় সর্বদা অবস্থিত /usr/bin
।python
করা উচিত নিজের স্ক্রিপ্টটি চালান এক প্রথম প্রদর্শিত হয় PATH
। মেক রান hello.py
দিয়ে শুরু করা , যা (কার্যত) দৌড়ানোর সমতুল্য ।#!/usr/bin/env python
./hello.py
/usr/bin/env python hello.py
python hello.py
আপনি যে কারণে ব্যবহার করতে পারবেন না তা #!python
হ'ল:
/
)।python
বর্তমান ডিরেক্টরিতে কার্যকর করা হবে । কমান্ডটিতে স্ল্যাশ না থাকা অবস্থায় পাথ সন্ধান করা নির্দিষ্ট শেল আচরণ।কখনও কখনও পাইথন বা অন্যান্য স্ক্রিপ্ট যা শেল স্ক্রিপ্ট নয় সেগুলির সাথে শেবাং লাইন থাকবে #!/bin/sh ...
যেখানে ...
অন্য কোনও কোড রয়েছে। এটি কখনও কখনও সঠিক হয়, কারণ বোর্ন-সামঞ্জস্যপূর্ণ শেলটি ( sh
) যুক্ত করার জন্য কয়েকটি উপায় রয়েছে যাতে এটি একটি পাইথন দোভাষীকে ডাকতে পারে। (একটি যুক্তি সম্ভবত ধারণ করবে contain python
) তবে, বেশিরভাগ উদ্দেশ্যে, #!/usr/bin/env python
সহজ, আরও মার্জিত এবং আপনার পছন্দ মতো কাজ করার সম্ভাবনা বেশি।
অনেক প্রোগ্রামিং এবং স্ক্রিপ্টিং ভাষা এবং কিছু অন্যান্য ফাইল ফর্ম্যাট #
একটি মন্তব্য হিসাবে ব্যবহার করে । তাদের যে কোনওটির জন্য, ভাষার একটি ফাইল একটি প্রোগ্রাম দ্বারা চালিত হতে পারে যা পরে প্রথম লাইনে প্রোগ্রামটি নির্দিষ্ট করে যুক্তি হিসাবে গ্রহণ করে #!
।
কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজে #
সাধারণত কোনও মন্তব্য হয় না, তবে বিশেষ ক্ষেত্রে প্রথম পংক্তিটি যদি এটি শুরু হয় তবে তা অগ্রাহ্য করা হয় #!
। এটি #!
সিনট্যাক্সের ব্যবহারকে আরও সহজ করে #
দেয় যদিও অন্যথায় কোনও লাইন মন্তব্য করে না।
এটি স্বল্পতর স্বজ্ঞাত হলেও, কোনও ফাইল যার ফাইল ফর্ম্যাটটি প্রথম লাইনের সাথে সামঞ্জস্য করতে পারে #!
তারপরে একটি এক্সিকিউটেবলের পুরো পথ অনুসরণ করে একটি শেবাং লাইন থাকতে পারে। আপনি যদি এটি করেন এবং ফাইলটি নির্বাহযোগ্য হিসাবে চিহ্নিত করা হয়, তবে আপনি এটি কোনও প্রোগ্রামের মতো চালাতে পারেন ... যার ফলে এটি নথির মতো খোলা থাকবে।
কিছু অ্যাপ্লিকেশন এই আচরণটি ইচ্ছাকৃতভাবে ব্যবহার করে। উদাহরণস্বরূপ, ভিএমওয়্যারের মধ্যে .vmx
ফাইলগুলি ভার্চুয়াল মেশিনগুলি সংজ্ঞায়িত করে। আপনি ভার্চুয়াল মেশিনটিকে "চালানো" যেমন স্ক্রিপ্ট হিসাবে করতে পারেন কারণ এই ফাইলগুলি এক্সিকিউটেবল হিসাবে চিহ্নিত রয়েছে এবং একটি শেবাং লাইন রয়েছে যার ফলে এটি একটি ভিএমওয়্যার ইউটিলিটিতে খোলা রয়েছে।
rm
ফাইলগুলি সরায়। এটি কোনও স্ক্রিপ্টিং ভাষা নয়। যাইহোক, যে ফাইলটি শুরু হয় #!/bin/rm
এবং এক্সিকিউটেবল হিসাবে চিহ্নিত হয় তা চালানো যেতে পারে এবং আপনি যখন এটি চালাবেন, তখন rm
এটি মুছে ফেলা হবে।
এটি প্রায়শই "ফাইলটি নিজেকে মুছে ফেলা হয়" হিসাবে ধারণা করা হয়। তবে ফাইলটি আসলেই চলমান নয়। এটি .vmx
ফাইলগুলির জন্য উপরে বর্ণিত পরিস্থিতির মতো more
তবুও, #!
লাইনটি একটি সাধারণ কমান্ড চালানোর সুবিধার্থে (কমান্ড-লাইন যুক্তি সহ), আপনি কিছু স্ক্রিপ্টিং এইভাবে সম্পাদন করতে পারেন। "স্ক্রিপ্ট" এর সাধারণ উদাহরণ হিসাবে আরও পরিশীলিত হিসাবে #!/bin/rm
বিবেচনা করুন:
#!/usr/bin/env tee -a
এটি ইন্টারেক্টিভভাবে ব্যবহারকারীর ইনপুট নেয়, এটি ব্যবহারকারীর লাইনে বাই লাইনে প্রতিধ্বনি দেয় এবং "স্ক্রিপ্ট" ফাইলের শেষে যুক্ত করে।
কাজে লাগল? বেশি না. ধারণামূলক আকর্ষণীয়? পুরোটাই! হ্যাঁ. (কিছুটা।)
স্ক্রিপ্ট / প্রোগ্রাম যা হয় একবারে একাধিক ভাষা , উদাহরণস্বরূপ, অপারেটিং সিস্টেমের এটি ছিল না এ hashbang কার্যকারিতা অনুকরণ ।
(এই প্রোগ্রামগুলিকে বহুগ্লট বলা হয় , তবে এটি সফ্টওয়্যার বিকাশে বহুগ্লুতের অন্য অর্থের সাথে বিভ্রান্ত হওয়ার দরকার নেই , এমন একটি প্রোগ্রাম / প্রকল্প যেখানে বিভিন্ন অংশে বিভিন্ন ভাষায় লিখিত হয়))
কিউ বেসিক / কুইকব্যাসিকের মেটাকোমেন্ডস , যা কোড তৈরির জন্য সংকলক (সংকলিত কোডের জন্য) বিকল্পগুলিতে সিগন্যাল করেছিল, তবে মন্তব্যের অংশ ছিল এবং এভাবে প্রকৃত সংকলন / ব্যাখ্যার সময় উপেক্ষা করা হয়েছিল।
-x
পতাকাটি কী করবে?
-x
"[গুলি] প্রথম লাইন ... এড়িয়ে যান" 2nd লাইন সংখ্যাযুক্ত পরার 1
পরিবর্তে 2
, 3 য় লাইন 2
পরিবর্তে 3
, ইত্যাদি এই জন্যই আপনি যে ফ্ল্যাগ ব্যবহার করা উচিত নয়। ;) -x
নন-ইউনিক্স-এর মতো ওএসগুলিতে স্ক্রিপ্ট করার জন্য যা শেবাং-এর মতো সিনট্যাক্স দিয়ে শুরু #
হয় না (সুতরাং পাইথন মন্তব্য নয়)।
perl script.pl
বনাম ./script.pl
) তাহলে অনুবাদক হবে যেমন পতাকা বিশ্লেষণ করতে কুঁড়েঘর লাইন পড়া -w
। যদিও এই বৈশিষ্ট্যটির উপর নির্ভর করার প্রস্তাব দেওয়া হয় না।
একটি শেবাং হ'ল অক্ষরের সংখ্যা চিহ্ন এবং বিস্মৃত চিহ্ন চিহ্ন (যেমন "# #") সমন্বিত অক্ষর ক্রম যখন কোনও স্ক্রিপ্টের প্রাথমিক লাইনে প্রাথমিক দুটি অক্ষর হিসাবে দেখা দেয়।
* নিক্স অপারেটিং সিস্টেমের অধীনে, যখন শেবাং দিয়ে শুরু হওয়া কোনও স্ক্রিপ্ট চালানো হয়, প্রোগ্রাম লোডার স্ক্রিপ্টের বাকী প্রাথমিক রেখার বাকী অংশটিকে দোভাষী নির্দেশ হিসাবে পার্স করে; স্ক্রিপ্টটি চালানোর চেষ্টা করার সময় প্রথমে ব্যবহৃত পথটি আর্গুমেন্ট হিসাবে পাঠিয়ে পরিবর্তে নির্দিষ্ট দোভাষী সংকেত চালিত হয়। উদাহরণস্বরূপ, যদি কোনও স্ক্রিপ্টের নাম "পথ / থেকে / আপনার স্ক্রিপ্ট" দিয়ে দেওয়া হয়, এবং এটি নিম্নলিখিত লাইন দিয়ে শুরু হয়:
#!/bin/sh
তারপরে প্রোগ্রাম লোডারকে প্রোগ্রামটি "/ bin / sh" পরিবর্তে চালানোর নির্দেশ দেওয়া হয় যেমন বোর্ন শেল বা একটি সামঞ্জস্যপূর্ণ শেল, "আস্তে আস্তে / আপনার স্ক্রিপ্ট "টিকে প্রথম আর্গুমেন্ট হিসাবে পাস করে।
তদনুসারে, এটিকে একটি স্ক্রিপ্টের নাম দেওয়া হয়েছে "পাথ / টু / পাইথন-স্ক্রিপ্ট" পাথ দিয়ে এবং এটি নিম্নলিখিত লাইন দিয়ে শুরু হয়:
#!/bin/python
তারপরে লোড হওয়া প্রোগ্রামটিকে "/ বিন / পাইথন" পরিবর্তে প্রোগ্রামটি চালানোর নির্দেশ দেওয়া হয়, উদাহরণস্বরূপ পাইথন দোভাষী, প্রথম যুক্তি হিসাবে "পাথ / টু / পাইথন-স্ক্রিপ্ট" পাস করে।
সংক্ষেপে "#" বর্ণের ক্রম "#" করার সময় একটি লাইন মন্তব্য করবে! কোনও স্ক্রিপ্টের প্রাথমিক লাইনে প্রথম দুটি অক্ষর হিসাবে উপস্থিত হওয়ার অর্থ উপরে বর্ণিত অর্থ।
বিশদর জন্য দেখুন কিছু স্ক্রিপ্ট কেন # দিয়ে শুরু হয়! ...?
উত্স: এই উত্তরটি কিছু বিভাগ থেকে (সামান্য সংশোধন সহ) উদ্ভূত হয় কুঁড়েঘর (ইউনিক্স) উপর ইংরেজি উইকিপিডিয়া (দ্বারা উইকিপিডিয়া অবদানকারী )। এই নিবন্ধটি সিসি-বাই-এসএ 3.0 এর আওতায় লাইসেন্স করা হয়েছে, এটি এও-তে ব্যবহারকারীর সামগ্রীর মতো, সুতরাং এই বিকাশটি অ্যাট্রিবিউশন সহ অনুমোদিত।
#!
এটি shebang
যখন স্ক্রিপ্টের প্রাথমিক লাইনে প্রাথমিক দুটি অক্ষর হিসাবে দেখা দেয় তখনই ডাকা হয় । এটি সম্পাদনার জন্য দোভাষীকে নির্দেশ করতে স্ক্রিপ্টগুলিতে ব্যবহৃত হয়। shebang
অপারেটিং সিস্টেম (কার্নেল), শেল জন্য না থাকে; সুতরাং এটি কোনও মন্তব্য হিসাবে ব্যাখ্যা করা হবে না।
সৌজন্যে: http://en.wikedia.org/wiki/Shebang_%28Unix%29
সাধারণভাবে, যদি কোনও ফাইল এক্সিকিউটেবল হয়, তবে বাস্তবে এক্সিকিউটেবল (বাইনারি) প্রোগ্রাম না হয় এবং এই জাতীয় একটি লাইন উপস্থিত থাকে, # এর পরে নির্দিষ্ট প্রোগ্রামটি! স্ক্রিপ্টনাম এবং এর সমস্ত যুক্তি দিয়ে শুরু করা হয়েছে। এই দুটি চরিত্র # এবং! ফাইলের প্রথম দুটি বাইট হতে হবে!
বিস্তারিত তথ্য: http://wiki.bash-hackers.org/scriptting/basics#the_shebang
না, এটি কেবল exec
লিনাক্স কার্নেলের সিস্টেম কল দ্বারা ব্যবহৃত হয় এবং দোভাষী দ্বারা একটি মন্তব্য হিসাবে বিবেচিত হয়
আপনি যখন ব্যাশ করবেন:
./something
লিনাক্সে, exec
এটি পথের সাথে সিস্টেম কলকে কল করে ./something
।
কার্নেলের এই লাইনটি এই ফাইলটিতে পাঠানো হবে exec
: https://github.com/torvalds/linux/blob/v4.8/fs/binfmt_script.c#L25
if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!'))
এটি ফাইলের প্রথম বাইটগুলি পড়ে এবং তাদের সাথে তুলনা করে #!
।
যদি তুলনাটি সত্য হয়, তবে বাকী রেখাটি লিনাক্স কার্নেল দ্বারা বিশ্লেষণ করা হয়েছে, যা প্রথম আর্গুমেন্ট হিসাবে exec
পাথ /usr/bin/env python
এবং বর্তমান ফাইলের সাথে আরেকটি কল করে :
/usr/bin/env python /path/to/script.py
এবং এটি কোনও স্ক্রিপ্টিং ভাষার জন্য কাজ করে যা #
মন্তব্য চরিত্র হিসাবে ব্যবহার করে ।
এবং হ্যাঁ, আপনি এটি দিয়ে একটি অসীম লুপ তৈরি করতে পারেন:
printf '#!/a\n' | sudo tee /a
sudo chmod +x /a
/a
বাশ ত্রুটিটি সনাক্ত করে:
-bash: /a: /a: bad interpreter: Too many levels of symbolic links
#!
মানুষের পাঠযোগ্য হতে পারে, তবে এটির প্রয়োজন নেই।
যদি ফাইলটি বিভিন্ন বাইট দিয়ে শুরু হয়, তবে exec
সিস্টেম কলটি একটি ভিন্ন হ্যান্ডলার ব্যবহার করবে। অন্যান্য গুরুত্বপূর্ণ বিল্ট-ইন হ্যান্ডলারটি ইএলএফ এক্সিকিউটেবল ফাইলগুলির জন্য: https://github.com/torvalds/linux/blob/v4.8/fs/binfmt_elf.c#L1305 যা বাইটগুলি পরীক্ষা করে 7f 45 4c 46
(যা মানুষের মতো হয়ে ওঠে জন্য পঠনযোগ্য .ELF
)। আসুন নিশ্চিত করুন যে 4 টি প্রথম বাইট পড়ে /bin/ls
, যা একটি ELF এক্সিকিউটেবল:
head -c 4 "$(which ls)" | hd
আউটপুট:
00000000 7f 45 4c 46 |.ELF|
00000004
সুতরাং যখন কার্নেল সেগুলি বাইটগুলি দেখে, এটি ELF ফাইলটি নেয়, এটিকে সঠিকভাবে মেমরিতে রাখে এবং এটি দিয়ে একটি নতুন প্রক্রিয়া শুরু করে। আরও দেখুন: https://stackoverflow.com/questions/8352535/how-does-kernel-get-an-executable-binary-file-running-under-linux/31394861#31394861
অবশেষে, আপনি binfmt_misc
যান্ত্রিকতার সাথে আপনার নিজের শেবাং হ্যান্ডলার যুক্ত করতে পারেন । উদাহরণস্বরূপ, আপনি ফাইলগুলির জন্য.jar
একটি কাস্টম হ্যান্ডলার যুক্ত করতে পারেন । এই প্রক্রিয়াটি এমনকি ফাইল এক্সটেনশনের মাধ্যমে হ্যান্ডলারদের সমর্থন করে। আর একটি অ্যাপ্লিকেশন হ'ল কিউইএমইউ সহ স্বতন্ত্রভাবে একটি ভিন্ন স্থাপত্যের এক্সিকিউটেবলগুলি চালানো ।
আমি মনে করি না পসিআইএক্স তবে শিবাংগুলি নির্দিষ্ট করে: https://unix.stackexchange.com/a/346214/32558 , যদিও এটি যৌক্তিক বিভাগে উল্লেখ করা হয়েছে, এবং ফর্মটিতে "যদি এক্সিকিউটেবল স্ক্রিপ্টগুলি সিস্টেম দ্বারা সমর্থিত হয় তবে কিছু হতে পারে" ঘটতে "।
#include
। সেখানেও, এটি#
কোনও মন্তব্য হিসাবে বোঝানো হয়নি।