দ্রষ্টব্য: একটি পসিক্স-সম্মতিযুক্ত সমাধানের জন্য, এই উত্তরটি দেখুন ।
${BASH_SOURCE[0]}(অথবা, আরও সহজভাবে, $BASH_SOURCE[1]
) সমস্ত অনুরোধের দৃশ্যে ধারণ স্ক্রিপ্টের (সম্ভাব্য আপেক্ষিক) পথ ধারণ করে , বিশেষত যখন স্ক্রিপ্টটি উত্সাহিত হয় তখনও এটি সত্য নয় $0।
তদ্ব্যতীত, চার্লস ডাফি যেমন উল্লেখ করেছেন, কলকারী $0একটি নির্বিচার মানতে সেট করতে পারেন ।
উল্টো দিকে, খালি $BASH_SOURCE থাকতে পারে, যদি কোনও নামযুক্ত ফাইল জড়িত না থাকে; উদাহরণ:
echo 'echo "[$BASH_SOURCE]"' | bash
নিম্নলিখিত উদাহরণে এই প্রকাশ করে:
লিপি foo:
#!/bin/bash
echo "[$0] vs. [${BASH_SOURCE[0]}]"
$ bash ./foo
[./foo] vs. [./foo]
$ ./foo
[./foo] vs. [./foo]
$ . ./foo
[bash] vs. [./foo]
$0পসিএক্স শেল স্পেসিফিকেশনের অংশ, যদিও BASH_SOURCEনামটি থেকে বোঝা যায়, বাশ-নির্দিষ্ট।
[1] readingচ্ছিক পড়া: ${BASH_SOURCE[0]}বনাম$BASH_SOURCE :
বাশ আপনাকে স্কেলারের স্বরলিপি ব্যবহার করে 0একটি অ্যারে ভেরিয়েবলের উপাদান উল্লেখ করতে দেয় : লেখার পরিবর্তে , আপনি লিখতে পারেন ; অন্য কথায়: আপনি যদি ভেরিয়েবলটিকে রেফার করে রাখেন যেন এটি একটি স্কেলারের মতো হয় তবে আপনি সূচিতে উপাদানটি পান । ${arr[0]}$arr0
এই বৈশিষ্ট্যটি ব্যবহার করা সত্যটি $arrএকটি অ্যারেটিকে অস্পষ্ট করে , এ কারণেই জনপ্রিয় শেল-কোড লিন্টার শেলচেক.net নিম্নলিখিত সতর্কতা জারি করে (এই লেখার মতো):
SC2128: একটি সূচি ব্যতীত একটি অ্যারের প্রসারিত করা কেবল প্রথম উপাদান দেয়।
একদিকে নোট: যদিও এই সতর্কতাটি সহায়ক, তবুও এটি আরও সুনির্দিষ্ট হতে পারে, কারণ আপনি অগত্যা প্রথম উপাদানটি পাবেন না : এটি বিশেষত সূচকগুলিতে 0ফিরে আসে যে উপাদানটি , তাই যদি প্রথম উপাদানটির উচ্চতর সূচক থাকে - যা বাশে সম্ভব - আপনি খালি স্ট্রিং পাবেন; চেষ্টা 'a[1]='hi'; echo "$a"'।
(বিপরীতে zsh, কখনও দলত্যাগী প্রকৃতপক্ষে করে প্রথম উপাদান আসতে তার সূচক নির্বিশেষে)।
আপনি তার দুর্বোধ্যতা কারণে এই বৈশিষ্ট্যটি পরিহার করা চয়ন করতে পারেন, কিন্তু এটা predictably কাজ করে এবং, যৌক্তিকভাবে বলা যায়, আপনি খুব কমই, যদি কখনও, ব্যবহার করার দরকার সূচকের করব অন্যান্য তুলনায় 0অ্যারে ভেরিয়েবলের ${BASH_SOURCE[@]}।
BASH_SOURCEbash-3.0-alpha এ যুক্ত হয়েছিল। আপনার টেস্টিং সিস্টেমের উপর নির্ভর করে আপনার এটি নাও থাকতে পারে। আমি এটি প্রাথমিক সোলারিস এবং ওএস এক্স উভয়ই অনুপস্থিত পেয়েছি। এছাড়াও ফিরে দেখুন: ইউ এন্ড এল.এসইতে কোনও ফাংশন বা উত্সযুক্ত স্ক্রিপ্ট থেকে কেবল 'ফিরতে' পারে can